首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SCIP学习笔记

Lisp基本语法 Lisp原始定义在John McCarthy1960发表论文[3]。 Lisp[4]是一个语言族,包括Common LispScheme,二者区别见[5]。...(+ x 1)) (sigma sqrt 1 inc 4) ; 3.41 (sigma sqrt_ 1 inc 4) ; 3.41 Lambda构造过程 匿名函数用法同Python (lambda...(display x)) (print 3) ; ; 3 以上是Lisp主要语法规则,非常简练。...构造数据抽象 闭包 (这里不是匿名函数) 是在处理符合数据中一个关键思想:用于组合数据对象粘合剂,不但能用于组合基本数据对象,同样也可以用复合数据对象。...Wiki: 闭包是引用了自由变量函数 序对 用来粘合两个对象,用法: (define x (cons 1 2)) (car x) ; 1 (cdr x) ; 2 序对一种定义: (define

1.5K40

日拱一卒,伯克利CS61A,居然有Lisp这样语言……

: (define (square x) (* x x)) 这里(square x)是一个整体,表示函数接收参数。...除了cons之外还有三个常用符号,分别是car,cdrnil。car用来返回pair中第一个元素,cdr用来返回pair中第二个元素,nil表示一个空list。...符号 问题来了,我们怎么在Lisp当中区分变量符号呢? 比如我们定义了两个变量: (define a 1) (define b 2) 假设我们想要单纯表示ab这带个字符,应该怎么办呢?...这个作业中Scheme是一个特别的版本,允许我们使用TrueFalse。 Q2: Sign 使用cond语句,实现sign分段函数。当x > 0时,sign(x) = 1。...这里我们要做是使用Lisplist来实现Set,没有看过视频也没有关系,我们直接来看题就行。 Q6: Contains 实现Contains函数,用来判断元素是否在Set当中。

92540
您找到你想要的搜索结果了吗?
是的
没有找到

Emacs Lisp

前言 Lisp 是一门很古老语言 LISP 是具有悠久历史计算机编程语言家族,有独特完全括号前缀符号表示法,起源于1958年,是现今第二悠久而仍广泛使用高级编程语言,只有 FORTRAN 编程语言比它更早一年...^ 把光标停在这里,再键入C-x C-e ;; 下面insert函数作用是在光标所在出插入字符Hello (insert "Hello!")..." my-name)) ;; ^ 把光标停在这里,再键入C-x C-e 执行defun命令来定义函数 ;; 通过defun命令,你已经在Emacs中安装了这个hello函数,这个函数就成为了Emacs一部分...,知道你退出Emacs或者改变hello定义 ;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数执行ELisp指令 ;; 在Elisp中直接输入函数名称就是调用该函数。..."Hello") 在当前buffer中做前向搜索 ;; (while x y) 当x 条件满足时执行y指令 ,当x返回nil时,while循环结束 ;; 执行这个函数 替换test buffer

2.3K40

Emacs Lisp

前言 Lisp 是一门很古老语言 LISP 是具有悠久历史计算机编程语言家族,有独特完全括号前缀符号表示法,起源于1958年,是现今第二悠久而仍广泛使用高级编程语言,只有 FORTRAN 编程语言比它更早一年...^ 把光标停在这里,再键入C-x C-e ;; 下面insert函数作用是在光标所在出插入字符Hello (insert "Hello!")..." my-name)) ;; ^ 把光标停在这里,再键入C-x C-e 执行defun命令来定义函数 ;; 通过defun命令,你已经在Emacs中安装了这个hello函数,这个函数就成为了Emacs一部分...,知道你退出Emacs或者改变hello定义 ;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数执行ELisp指令 ;; 在Elisp中直接输入函数名称就是调用该函数。..."Hello") 在当前buffer中做前向搜索 ;; (while x y) 当x 条件满足时执行y指令 ,当x返回nil时,while循环结束 ;; 执行这个函数 替换test buffer

2.2K30

(cljsrun-at (JSVM. :browser) 简单类型可不简单啊~)

|:=$&] 末尾字符不能是: 区分大小写  命名习惯: 全小写 单词间以-分隔 常量全局标识,首尾为*,如*main-cli-fn* *x,标识内置变量,且经常值变化 x?,标识断言函数 x!...,标识产生副作用函数 x-,标识其将产生私有方法,如defn-deftest- _,标识可忽略symbol 既然Symbol仅仅作为标识符来使用,为何不见JS、C#等会将标识符独立出来作为一种类型呢...原因十分简单但又难以理解——Lisp中代码即数据,数据即代码。作为Lisp方言cljs自然传承了这一耀眼特性!...;; 定义一个List实例,其元素为ab两个Symbol实例 (def symbol-list (list 'a 'b))  大家有没有注意到'这个符号啊?...Special Form又是什么鬼?  实质上就是语言原语,其他函数Macro均基于它们来构造,当解析器遇到一个Symbol时会解析顺序是Special Form -> Var。

68170

Emacs Lisp2

;; ELisp中赋值函数是是setq,下面的表达式给变量my-name赋值"Bastien"(setq my-name "Bastien");; ^ 把光标停在这里,再键入C-x C-e;; 下面insert...;; ^ 把光标停在这里,再键入C-x C-e;; insert函数还可以两个常量字符,比如(insert "Hello" " world!")...));; ^ 把光标停在这里,再键入C-x C-e 执行defun命令来定义函数;; 通过defun命令,你已经在Emacs中安装了这个hello函数,这个函数就成为了Emacs一部分,知道你退出Emacs...或者改变hello定义;; 从下面开始,我们将不再提醒读者使用C-x C-e来定义函数执行ELisp指令;; 在Elisp中直接输入函数名称就是调用该函数。..."Hello") 在当前buffer中做前向搜索;; (while x y) 当x 条件满足时执行y指令 ,当x返回nil时,while循环结束;; 执行这个函数 替换test buffer中hello

95240

日拱一卒,伯克利大招,带你写一个解释器(一)

Scheme各种方言对于符号都比较宽容,我们要实现解释器中变量不仅支持大写小写字母,还支持这些符号:!$%&*/:?@^_~-+....比如说:(define (f x y) (+ x y)),我们在read_tail中遇到了(f x y)语句左括号,这是一个子语句开头。...我们调用scheme_read可以读到紧跟着完整语句,即(f x y),但是这个语句只是完整语句一个部分。...PrimitiveProducedure中apply方法接收一个list参数当前环境。注意这里args参数是一个Scheme中list,在Python中以Pair对象形式存储。...我们要做就是把变量名对应值存起来,这里要注意是,值并不一定是一个数值,也可能是一个表达式。比如(define x (+2 2)),所以绑定之前要先调用scheme_eval函数进行评估。

73021

Scheme实现数字电路仿真(1)——组合电路

所有的Lisp里,最常用手法当然是使用序偶(pair)来表示一切(其实Lisp也就是List Processing,list也是一种序偶),序偶也是数学里很基本概念,用来表示有序一对数据,所谓有序...set-signalget-signal这两个函数用于设置、获取wire信号,显然就是对pair第一个元素进行操作,于是很简单就可以实现   (define (set-signal x v) (set-car...实际上就是先造出列表来表示门各个输入信号,然后再操作pair第二个元素指向这个列表。   对于非门只会有一个输入信号,   (define (not-gate x y) (set-cdr!...x (list 'not y)))   而对于与、或门,会有多个输入信号(可能不只两个),于是我们用可变参数写法了。   ...x (cons 'or input-list)))   注意这里,input-list是输入信号列表,本来就是列表,所以只需要用cons把'and或者'or接在前面即可造出需要完整列表了。

97420

实战Go内存泄露

list 查看某个函数代码,以及该函数每行代码指标信息,如果函数名不明确,会进行模糊匹配,比如list main会列出main.mainruntime.main。...,main.main就是我们编写main函数,runtime.main是runtime包中main函数,也就是所有main函数入口,这里不多介绍了,有兴趣可以看之前调度器文章《Go调度器系列(2...下面是当前goroutine调用栈,列出了函数所在文件行数,这个行数对定位很有帮助,如下: 32015 @ 0x42e15a 0x42e20e 0x40534b 0x4050e5 0x6d8559...top, list, traces: top:显示正运行到某个函数goroutine数量 traces:显示所有goroutine调用栈 list:列出代码详细信息。...,直接看traces命令,traces能列出002中比001中多那些goroutine调用栈,这里只有1个调用栈,有20312个goroutine都执行这个调用路径,可以看到alloc2中匿名函数

4.8K22

Lisp语言简介_c++是什么语言

这个比较小众编程到底是什么~ ————————————————————————— LISP(全名LISt Processor,即列表处理语言),由约翰·麦卡锡在1960年左右创造一种基于λ演算函数式编程语言...在Unix/Linux系统中,还有一种Emacs一起Emacs Lisp(而Emacs正是用Lisp作为扩展语言进行功能扩展)非常流行,并建立了自己标准。...LISP语言主要现代版本包括Common LispScheme。 基本介绍 LISP 是第一個函數型程式語言,区别于C/Java等命令型编程语言。...基本操作符3 eq (eq x y) 当 x y 值相同或者同为空表时返回t,否则返回空表 () > (eq ‘a ‘a)t> (eq ‘a ‘b)()> (eq ‘() ‘())t 基本操作符4...,例如: > (cdr ‘(a b c))(b c) 基本操作符6 cons (cons x y) 返回一个cons cell (x y),例如: > (cons ‘a ‘b)(a . b) 一个cons

2.2K20

Emacs 28 新特性介绍

与 flush-lines 命令类似,但是匹配行会作为整体加到 kill ring 中 • 新配置 kill-transform-function 字符在添加到 kill ring 中预处理函数 •...用 y-or-n-p 替代 yes-or-no-p ,之前都是用这么做: (fset 'yes-or-no-p 'y-or-n-p) • 新选项 copy-directory-create-symlink...• remove-hook 改成 interactive 命令 • 新增命令 shortdoc-display-group 之前节目[7]中多次提到过功能,按函数类型归类,展示其用法 shortdoc...,nil 表示 tar.gz • 新配置 dired-copy-dereference 拷贝时是否跟随源文件中符号链接 • Org 升级到 9.5 版本 • NonGNU[8] ELPA 默认开启 •...positional 参数已经被淘汰 编译方式 看了上面那么多新功能,读者可能已经按捺不住内心喜悦,这里就来介绍如何在 macOS 中编译 28 版本,其他操作系统方式类似。

91230
领券