1. XenForo 1.5.14 中文版——支持中文搜索!现已发布!查看详情
  2. Xenforo 爱好者讨论群:215909318 XenForo专区

新闻 Egison 3.5.1 发布,模式匹配编程语言 下载

本帖由 漂亮的石头2014-12-30 发布。版面名称:软件资讯

  1. 漂亮的石头

    漂亮的石头 版主 管理成员

    注册:
    2012-02-10
    帖子:
    486,020
    赞:
    46
    Egison 是世界上首个实现了非线性模式匹配的编程语言,用于处理各种不自由的数据类型。如列表、多集合、集合、树和图。

    示例代码:


    ;; 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 表达式到模式外


    (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 开始


    (define $xa [| 1 2 3 4 5 |])
    (array-size xa);=>5
    xa_1;=>1
    xa_5;=>5
    xa_8;=>undefined
    Egison 3.5.1 发布,模式匹配编程语言下载地址
     
正在加载...