精华内容
参与话题
问答
  • Scheme

    万次阅读 2019-10-02 19:20:47
    ●有点像面向对象的写法^-^ ●闭包? (define counter (let ([next 0]) (lambda () (set! next (+ next 1)) next))) (counter) (counter) ...(define make-counter (lambda () (let ([count 0]) ...

    ● 有点像面向对象的写法^-^

    ● 闭包?

    (define counter
      (let ([next 0])
        (lambda ()
          (set! next (+ next 1))
          next)))

    (counter)

    (counter)

     

    (define make-counter
      (lambda ()
        (let ([count 0])
          (lambda ()
            (set! count (+ count 1))
            count))))

    (define counter (make-counter))
    (counter)
    (counter)
    (counter)

    转载于:https://www.cnblogs.com/volcanorao/p/11560209.html

    展开全文
  • Scheme 介绍

    万次阅读 2019-06-03 05:20:12
    最近一直在看 sicp 这本书,准备写点读书笔记,这篇当作是对 Scheme 语言的介绍,毕竟全书是用这门语言写的。 下面是我对书中使用的 mit-scheme 的一些理解,我没有正统学习过函数式或类 Lisp 语言,只有一些我自己...

    最近一直在看 sicp 这本书,准备写点读书笔记,这篇当作是对 Scheme 语言的介绍,毕竟全书是用这门语言写的。

    下面是我对书中使用的 mit-scheme 的一些理解,我没有正统学习过函数式或类 Lisp 语言,只有一些我自己在做这本书习题时的一些理解,文中表述可能不会太专业,请谅解。

    Expressions

    basic

    (+ 1 2)
    
    ; 3
    复制代码

    compound

    (* (+ 1 2)
       (+ 3 4))
       
    ; 21
    
    复制代码

    Variables

    (define pi 3.14159)
    (define radius 10)
    
    (* pi (* radius radius))
    
    ; 314.159
    
    复制代码

    Procedure

    ; 定义 square 过程
    (define (square x) (* x x))
    
    ; 调用 square 过程
    (square (square 3))
    
    ;81
    复制代码

    Condition

    cond

    (define (abs x)
      (cond ((> x 0) x)
            ((= x 0) 0)
            ((< x 0) (- x))))
    
    (abs -42)
    ; 42
    
    (define (abs x)
      (cond ((< x 0) (- x))
            (else x)))
    
    (abs -42)
    ; 42
    
    复制代码

    比较有趣的是,在 mit-scheme 里,变量,过程等是可以同名的,会选用最后的定义,所以上述代码是完全可以运行的。

    if

    (define (abs x)
      (if (< x 0)
          (- x)
          x))
    
    (abs -42) 
    ; 42
    
    复制代码

    Logic

    ;; e Expression
    
    (and <e1> <e2>)
    
    (or <e1> <e2>)
    
    (not <e>)
    
    (and (> x 5) (< x 10))
    复制代码

    Lambda

    无名字 procedure(其他语言也有叫做匿名函数),可作为 procedure 的参数传递,返回。

    (define (inc x)
      (+ x 1))
    
    ;; 返回一个名字为 double 执行 proc 两次的 lambda
    (define (double proc)
      (lambda (x)
        (proc (proc x))))
    
    
    ((double inc) 5)   
    
    ; 7
    复制代码

    Variable binding

    let

    (let ((x 10)
          (y 5))
      y)
    
    ; 5
    
    ;; reference binding
    (let ((x 10))
      (let ((y (+ x 6)))
        y)) 
        
    ; 16
    
    ;; 用 let 会报错,因为在一个 let expression 里不能引用前面的 bindings
    ;; 使用 let*
    (let ((x 10)
          (y (+ x 6)))
      y)
      
    ;Unbound variable: x
    复制代码

    let*

    (let* ((x 10)                                                                                                    
           (y (+ x 6)))
      y)
    
    ; 16
    复制代码

    Data Structures

    Pairs

    (define x (cons 1 2))
    
    (car x)
    1
    
    (cdr x)
    2
    复制代码

    List

    ;; 下面两个等价
    
    (list 1 2 3)
    
    ;Value: (1 2 3)
     
    ;; '() 表示空 list,相当于 nil
    (cons 1 (cons 2 (cons 3 '())))
    
    ;Value: (1 2 3)
    复制代码

    Symbol

    symbol 是以 ' 开头的字符,是不带语义的变量。

    ;; define a symbol
    'apple
    
    ; apple
    
    ;; 空 list
    '() 
    
    ; ()
    
    ;; list of symbol
    (list 'a 'b 'c) 
    
    ; (a b c)
    
    ;; 可以简写成
    '(a b c)
    
    ;(a b c)
    复制代码

    equal

    ;; symbol equality
    (eq? 'apple 'apple))
    
    ; #t
    
    ;; return sublist of the list beginning with the first occurrence of the symbol
    (memq 'apple '(x (apple sauce) y apple pear)) 
    
    ; (apple pear)
    复制代码

    待续

    转载于:https://juejin.im/post/5cf4acfd518825473b4fbf54

    展开全文
  • Yet Another Scheme Tutorial——Scheme入门教程 中文版。其中文地址为:http://deathking.github.io/yast-cn/。pdf只是于2018。08把上面的内容加了目录、标题序号,制作成了pdf。 本教程的目的在于给读者在Scheme...
  • By now, Scheme is a well-established programming language and is finding increasing popularity in programming courses for undergraduates. Its expressive capabilities are matched by a simplicity of ...
  • scheme手册

    2018-08-04 18:14:24
    适合深入研究 scheme 者 请勿在未经授权的情况下上传任何涉及著作权侵权的资源,除非该资源完全由您个人创作 点击上传资源即表示您确认该资源不违反资源分享的使用条款,并且您拥有该资源的所有版权或者上传资源...
  • Scheme Pretty-Printing

    2017-09-07 15:37:03
    Scheme is an expression language. This means that everything that is entered to the Scheme interpreter/compiler is an expression. Expressions are separated by blank space (blank, tabs, new-lines). ...
  • Windows 的 Scheme IDE

    2008-11-20 09:54:02
    <p>What is a good Scheme IDE for Windows? OK, I'll admit it; I'm not at RMS's level, and don't want to use Emacs or any character-based interface -- I want a graphic IDE with colorization, a REPL, and...
  • scheme简明教程

    2018-04-06 13:34:21
    这是一本在国外比较有名的Scheme编程语言的入门教材。本教材适合任何对Scheme编程语言感兴趣的人阅读,尤其是有其他编程语言(特别是动态语言)编程经验,希望快速了解Scheme的不同点并且快速上手写点东西的人。
  • <p>I want to install <a href="http://www.gnu.org/software/mit-scheme/" rel="nofollow noreferrer">MIT Scheme</a> on my Mac, I have downloaded the <em>MacOS X binary(x86-64)</em>. <p>However, I could ...
  • Intent scheme url是一种用于在web页面中启动终端app activity的特殊URL,在针对intent scheme URL攻击大爆发之前,很多android的浏览器都支持intent scheme url。 Intent scheme url的引入虽然带来了一定的便捷性,...
  • scheme语言的解释器scheme48
  • dubbo配置scheme文件

    千次下载 热门讨论 2014-10-14 15:43:24
    dubbo配置scheme文件

空空如也

1 2 3 4 5 ... 20
收藏数 21,136
精华内容 8,454
关键字:

scheme