设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 软件追踪 查看内容

Egison 3.5.1发布,模式匹配编程语言

2014-12-30 16:34| 发布者: joejoe0332| 查看: 1984| 评论: 0|原作者: oschina|来自: oschina

摘要: Egison 是世界上首个实现了非线性模式匹配的编程语言,用于处理各种不自由的数据类型。如列表、多集合、集合、树和图。示例代码:?123456789;;Extractalltwinprimesfromtheinfinitelistofprimenumberswithpattern-ma ...

Egison 是世界上首个实现了非线性模式匹配的编程语言,用于处理各种不自由的数据类型。如列表、多集合、集合、树和图。

示例代码:

1
2
3
4
5
6
7
8
9
;; Extract all twin primes from the infinite list of prime numbers with pattern-matching!
(define $twin-primes
  (match-all primes (list integer)
    [<join _ <cons $p <cons ,(+ p 2) _>>>
     [p (+ p 2)]]))
  
;; Enumerate first 10 twin primes
(take 10 twin-primes)
;=>{[3 5] [5 7] [11 13] [17 19] [29 31] [41 43] [59 61] [71 73] [101 103] [107 109]}


Egison 3.5.1 发布,此版本更新内容如下:

移除 loop 表达式到模式外

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
(define $list
  (lambda [$a]
    (matcher
      {[,$val []
        {[$tgt (match [val tgt] [(list a) (list a)]
                 {[[<nil> <nil>] {[]}]
                  [[<cons $x $xs> <cons ,x ,xs>] {[]}]
                  [[_ _] {}]})]}]
       [<nil> []
        {[{} {[]}]
         [_ {}]}]
       [<cons $ $> [a (list a)]
        {[{$x @$xs} {[x xs]}]
         [_ {}]}]
       [<snoc $ $> [a (list a)]
        {[{@$xs $x} {[x xs]}]
         [_ {}]}]
       [<join $ $> [(list a) (list a)]
        {[$tgt (match-all tgt (list a)
                 [(loop $i [1 $n] <cons $xa_i ...> $rs) [(foldr (lambda [$i $r] {xa_i @r}) {} (between 1 n))
                                                         rs]])]}]
       [<nioj $ $> [(list a) (list a)]
        {[$tgt (match-all tgt (list a)
                 [(loop $i [1 $n] <snoc $xa_i ...> $rs) [(foldr (lambda [$i $r] {xa_i @r}) {} (between 1 n))
                                                         rs]])]}]
       [$ [something]
        {[$tgt {tgt}]}]
       })))

数组从 1 开始

1
2
3
4
5
(define $xa [| 1 2 3 4 5 |])
(array-size xa);=>5
xa_1;=>1
xa_5;=>5
xa_8;=>undefined

酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部