programming language 学习笔记 part B

这篇博客介绍了Racket编程语言的基础知识,包括括号运算、变量绑定、函数创建、环境与闭包、if语句、惰性计算、列表操作、cond语句、局部绑定、参数求值策略以及惰性求值的实现。还讨论了struct、宏和特殊功能,如透明性和可变性。
摘要由CSDN通过智能技术生成

编程语言:Racket

  • 使用括号来表示一个运算,括号内的运算一般不影响括号外

  • 括号内是运算符前置的,也就是说第一个操作符一定被视为运算符,除非括号前加 ’
    这里写图片描述

  • 变量binding

    • (define x expression)
    • Once an expression produces a value, it is irrelevant how the value was produced
  • 创建函数

    • Environment for closure determined when function is defined, but body is evaluated when function is called
(define cube
(lambda (x)
(* x x x)))
//语法糖
(define (cube3 x)
(* x x x))
  • if语句
    • (if e1 e2 e3)
    • e1为判断语句,为假(#f)则执行e3,否则执行e3
    • 惰性计算
  • cons
    • immutable
    • (cons 2 (cons 3 null)) 或者(list 2 3)
      • list实际上是以null结尾的pair
      • car相当于SML中的head
      • cdr相当于SML中的tail
      • null? 判断是否为空
      • null 空列表(不能用() 表示)
  • cond语句
    • 应用于多重判断
    • []中的第一个是判断,若为真执行后一语句
    • 最后一个判断必须为#t
    • 相当于switch语法
(cond [(null? xs) 0]
[(number? (car xs)) (+ (car xs) (sum (cdr xs)))]
[#t (+ (sum (car xs)) (sum (cdr xs)))]))
  • local binding
    • let\let*\letrec 三种形式
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值