sicp练习2.57 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18...
很久以前,就准备学习Lisp,但是遇到不少困难,社区太凌乱,也一直很犹豫,直到看了《Common Lisp - 想说爱你不容易》,想看看Common Lisp怎么样,之前都是拿Lisp的方言Schemel...正好有一篇Windows下如何安装使用CLISP的文章《Lisp语言: 在Windows下搭建CLisp环境》,于是在官网下载了一个安装程序 http/SF (sources and win32...现在,可以开始Common Lisp的学习之旅了,比如写第一个函数: ? 全选文字,右键菜单,发送到Lisp执行,就得到了结果4,很方便。 有了这个,大家还觉得学习Lisp很复杂么?...参考: 推荐另外一种Lisp环境 AllegroCL ,它有图形化的编程环境,可以开发窗体应用程序,请参考文章 Windows环境下学习Lisp和Scheme的两大利器 (http://seagate.iteye.com.../blog/1155231) 还有Scheme的一个分支,Racket,目前也很火,参考 Racket 这个语言的潜力怎么样?
通过给APP定义一个唯一的URL路径来从外部快速的打开这个指定的APP,每个app的URL Scheme都是不一样的,如果存在一样的URL Scheme,那么系统就会响应先安装那个app的URL Scheme...,因为后安装的app的URL Scheme被覆盖掉了,是不能被调用的。...应用: 第三方分享的SDK就是通过这种方式来实现分享的,我们将需要分享的数据传递给SDK,SDK通过OpenURL来打开第三方应用传递数据,返回时SDK来处理OpenUrl的参数,实现查看分享的回调...重写UIActivityViewController系统原生分享的openUrl方法 以上就是通过Url Scheme实现APP间相互跳转、传递数据、通信、分享功能的过程。...没错,集成的第三方分享SDK就是通过这种方式来实现分享的,只不过它们把数据、方法都封装到了SDK中。
还是先把Scheme代码编译、链接为普通可执行文件,这样运行就不是在解释的条件下了,速度可以提升数倍。 ...C语言中字符串比较可以用strcmp函数,而Scheme里字符串比较可以用 string=? string>? 等函数。 ...(_queen n (cons next current) 0 result)))))))) 其中,remove*是racket里的函数,用于集合相减,并且不改顺序,但它并不属于Scheme...此处略去实现。 比如(remove* '(2 3 4) '(1 2 4 5 6))返回'(1 5 6)。 ...函数并未实现。 在这个算法中,如果一个序列是非法的,也就是存在皇后互吃的,一定是最新的元带来的。因为如果判断到这一步,那么之前的子序列一定是合法的。
比如(P 2)表示的是'((1 2) (2 1)),或者是'((2 1) (1 2)),无论哪种实现,都是可行的。 valid?...是个谓词函数(返回bool值的函数),它的作用是对于某个具体排列,判断其表示的n个皇后有没有互相吃的情况: 如果有两个皇后互相吃,那么这个排列不可以作为最后的解,应当返回假,Scheme里也就是#f...; 如果不存在两个皇后互相吃,那么这个排列可以作为最后的皆,从而应当返回真,Scheme里也就是#t。 ...filter这么常用的算子似乎并未出现在r5rs中,很奇怪,我在这里就给出一个实现如下: (define (filter boolf set) (cond ((null?...函数的实现。 全排列 第一个问题就是要解决1~n的所有排列,可能会有人考虑将所有的排列用字典排序依次输出。 不过这一般是迭代的思想,而对于一种Lisp,我们第一反应一般是递归。
通过给APP定义一个唯一的URL路径来从外部快速的打开这个指定的APP,每个app的URL Scheme都是不一样的,如果存在一样的URL Scheme,那么系统就会响应先安装那个app的URL Scheme...,因为后安装的app的URL Scheme被覆盖掉了,是不能被调用的。...应用: 第三方分享的SDK就是通过这种方式来实现分享的,我们将需要分享的数据传递给SDK,SDK通过OpenURL来打开第三方应用传递数据,返回时SDK来处理OpenUrl的参数,实现查看分享的回调。...[重写UIActivityViewController系统原生分享的openUrl方法] 以上就是通过Url Scheme实现APP间相互跳转、传递数据、通信、分享功能的过程。...没错,集成的第三方分享SDK就是通过这种方式来实现分享的,只不过它们把数据、方法都封装到了SDK中。 [加油] [赞个]
,这一章开始思考时序电路的仿真实现。...Scheme建模下的原语 Verilog原语用表来表示,实际上是用表来代表一个函数关系,于是我们要做的,是试着用一个函数来代表基本元件的原语描述。 ...else current-output)))) 用0/1的list有一些不方便的地方,我们可以用数来代替,也可以考虑数和list一起支持,那么我们在处理的时候可能需要判断一下传入的是数还是list,Scheme...Scheme的闭包可以有多种方式,可以采用上一章中局部作用域变量的方法(这种方法并不是所有的语言都支持,比如Python则只能用class建立类了),另一种方式则是用不变量了,也就是纯函数式编程方式。...,但是可以实现统一的设计,以便更复杂的情况下的应用。
我这里做一个快速的整理思路: 1、鉴权调用接口凭证(access_token) 2、 HTTPS 调用 POST 请求地址:
output-pin d) (not-gate (a) (e)) (or-gate (b c) f) (xor-gate (e f) (g)) (and-gate (e g) (d)) 以上只是用Lisp...我们回头再想一想,之前Scheme描述的原语实现的是无副作用的函数,也就是数学意义上的函数。...包括Scheme在内的所有Lisp都有一种神奇的本领叫宏,让上述看起来面目全非的代码转换成之前要写的函数。...2.线与逻辑似乎并不好实现。 3.原语和模块没有统一。 4.只能做实现级的描述,无法做像verilog/VHDL那样的RTL。其实这里可以引入宏,来展开比较复杂表达式。
本系列并不是真的要做EDA,按照SICP里的相关内容,采用Lisp的方言Scheme。...仿真也一样可以引入模块建构能力,按照上面Scheme的描述,不难写出xor-gate的Scheme函数实现应该如下: (define (xor-gate z x y) (let ((nx...所有的Lisp里,最常用的手法当然是使用序偶(pair)来表示一切(其实Lisp也就是List Processing,list也是一种序偶),序偶也是数学里很基本的概念,用来表示有序的一对数据,所谓有序...既然pair里存的是引用,Scheme早在最早的标准中就规定了set-car!和set-cdr!用于修改pair中所存储的两个引用,以此实现各种复杂的数据结构。我们使用set!...Lisp作为弹性十足的语言,有多种方式来支持面向对象。
'platformVersion': '10', 'noReset': True }要实现应用内跳转...,可以使用deep links或scheme url.deep links或scheme url(遵循scheme协议) 的形式:[协议名(可以自定义)]://[域名][页面]?...参数query= id=hello&name=cg//authority = host + port//主机host= www.ycbjie.cn//端口port= 80跳转方式:driver.get(scheme_url
www.cnblogs.com/Colin-Cai/p/9123363.html 作者:窗户 QQ:6679072 E-mail:6679072@qq.com 教一个基本没编过什么程序的朋友scheme...,为什么教scheme呢?...然后让他借助scheme的递归,其余的只利用这三个函数来构造加减乘除乃至余数、乘方、对数。...;使用这三个函数实现自然数内的加减乘除乘方对数(《递归论》里的运算,除法和对数都是向下取整,减法被减数小于减数得到0) (define (eq0 x) (= x 0)) (define (inc x)...) y) ) ) ;这里的对数,是实数下对数的整数部分 (define (log x y) (if (> y x) 0 (inc (log (div x y) y)) ) ) 然而对数的实现稍有问题
前言 一直以来对Lisp语言怀有很崇敬的心里,《黑客与画家》对Lisp更是推崇备至,虽然看了不少有关Lisp的介绍但都没有机会去写段程序试试,就像我对C++一样,多少有点敬畏。...Lisp是古老的函数式语言,跟C,C++等命令式语言完全不一样的编程风格,但Lisp的方言很多,最后Lisp标准委员制定了Common Lisp,但内容很长,有1000多页,因此功能比较强大;而Lisp...目前Lisp有在JVM上的实现,在.NET上的实现就是 IronScheme,于是我便开始选择了IronScheme作为Lisp研究的第一站。...利用 Lisp的强大表达能力,调用.net强大的类库 Scheme可以当作脚本语言,可以.net程序动态生成一个 Scheme程序,Scheme程序再调用.net。。。。 这个过程的用途,明白了吧?...参考资源 更多的 Lisp,Scheme学习资源,可以参考下面的链接 : Lisp 的永恒之道 http://www.oschina.net/question/28_57183 Scheme语言--简介
▍网传编程语言鄙视链如下: asm → C ←→ C++ ←→ Java ←→ C# → JavaScript → VB → VBScript Common Lisp ←→ Scheme → Emacs...Lisp → Python Python ←→ Perl → shell PHP → all ▍网传编程语言单身版鄙视链如下: 老婆漂亮的程序员,鄙视老婆不漂亮的程序员。...▍网传操作系统的鄙视链如下: Unix → Linux → Windows → DOS Solaris → 其他Unix *BSD ←→ System* OpenBSD ←→ FreeBSD → NetBSD
Common Lisp 测完Scheme,再来测Scheme的本家兄弟,另外一种Lisp——Common Lisp 先用Common Lisp实现add,因为Common Lisp将数据和过程用不同的命名空间...但是似乎也改变了Lisp的味道,do显然此处只能在设计编译器、解释器的时候就得单独实现,虽然按理Lisp下这些都应该是宏,但是无论用宏如何将函数式编程映射为显示的迭代,因为尾clisp递归优化不支持,则无法和系统提供的...sbcl是Common Lisp的另外一个实现,在这个实现中,我们使用第一个add函数的版本,没有发生崩栈。...也终于给了我们一个更为靠谱的Common Lisp的实现。...看来,至少参考了Scheme的尾递归优化。 Ruby Ruby的作者松本行弘也是Lisp的粉丝,当然,我想大多数编程语言的作者都会是Lisp的粉丝,因为它会给人很多启发。
该功能的实现方式网络上有很多示例,在 Windows 和 macOS 不同平台下他们分别需要如下设置: Windows 注册自定义 URL Scheme Windows Registry Editor...macOS 注册自定义 URL Scheme macOS 下与 Windows 在自定义 URL 的实现上有差异,你需要在应用 boundle 里面,修改 Info.plist 增加如下字段: 实现自定义 URL Scheme 的不同,到这里都已经能成功唤起我们的应用了,但本文主要叙述的内容并不是唤起相关的能力,而是如何在应用已经启动的情况下,又通过浏览器去唤起应用来实现参数的传递...Windows 下对已启动应用传参 在 Windows 下我并没有找到像 macOS 一样方便的方式来实现这个功能,我的处理办法是,在第一个客户端启动时检测一下是否已经创建指定命名管道(Linux 下使用...和 macOS 上使用的是不同的机制,两个平台不同的实现步骤我们再列一下清单,避免日后遗忘: Windows 通过注册表注册 URL Scheme 到系统 程序首次启动实现自动创建管道能力 程序二次启动实现读取管道并广播通知参数能力
前言Lisp 是一门很古老的语言LISP 是具有悠久历史的计算机编程语言家族,有独特和完全括号的前缀符号表示法,起源于1958年,是现今第二悠久而仍广泛使用的高级编程语言,只有 FORTRAN 编程语言比它更早一年...,LISP 编程语族已经演变出许多种方言,现代最著名的通用编程语种是 Common Lisp 和 Scheme , 以上解释来自 WIKIEmacs Lisp 是 Lisp 的一个分支Emacs Lisp...,一种直译式的脚本语言,为LISP的方言之一,GNU Emacs与XEmacs文字编辑器都使用这个编程语言来扩展它们的功能,它的直译器是以C语言来实作的,它受到Maclisp的影响很大,但是跟Common...Lisp与Scheme有所不同最近我迷上了 Emacs所以顺藤摸瓜,竟然搭进去了一门语言万万没想到,为了了解一个编辑器,竟然搭进去了一门语言好在这门语言结构比较简单清晰以致于可以用 15 分钟入个门Tip...: 这一篇纯属于摘抄,不是原创,只是好东西忍不住拿出来分享,如果原作者有意见,可以随时联系我,下线此文章,我完全尊重原作者的意见原文,请参考 Emacs Lisp 15 分钟入门
✓ 爱不释手:学习了全部语法,看作者编写的书,遇到项目时会想想能不能用xxx实现,怎么实现。如golang,erlang。 ✓ 日常使用:只要是需要写代码的地方,下手首先想到的就是TA。...racket是一个lisp [1] 家族的语言,祖上是common lisp [2] 对立的阵营scheme [3],起初为教学的目的而创立。...racket在osx/linux/windows下都有各自的安装包,在其官网上下载安装即可。racket自带了一个有REPL功能的简单的IDE DrRacket,方便初学者领略语言的魅力。...这一切都不禁让我想起十年前学习Python的场景:windows下的IDE + beginner’s guide + dive into python,何其相似!...如果你看过「黑客与画家」,就知道Paul Graham近乎偏执地把一切溢美之词都给了lisp,说它是最有表现力的语言,说lisp是自己公司成功的"secret weapon"。
原始文档:https://inst.eecs.berkeley.edu/~cs61a/sp18/proj/scheme/#interpreter-details 在上一篇文章当中,我们完整实现了scheme...你将在questions.scm文件当中实现接下来的几个问题 虽然你已经完成了scheme解释器的开发,但由于可能存在潜在的bug。...来实现,其实只要Python写得出来,Lisp也一样可以,语法虽然不同,但是核心原理是一样的。...每一个非原生表达式都可以被写成一个Scheme list。所以我们可以实现一个过程,它可以像是生成一个scheme list一样生成另外一段程序。...因为scheme表达式是递归嵌套的,所以let-to-lambda也必须是递归的。 实际上,let-to-lambda的结构和scheme_eval函数是相似的,不过是用scheme语言实现的。
本书中使用的 Scheme 方言已经从原始的 Lisp 发展出来,在几个重要方面与后者不同,包括变量绑定的静态作用域和允许函数产生函数作为值。...实现都能运行这些代码。...这包括书中的程序、示例编程作业、补充材料以及 Lisp 方言 Scheme 的可下载实现。 —哈罗德·阿贝尔森和杰拉尔德·杰伊·萨斯曼 《SICP》第一版序言,1984 年 计算机就像小提琴。...Scheme,我们使用的 Lisp 方言,是试图将 Lisp 和 Algol 的力量和优雅结合在一起的尝试。...最后,我们要感谢多年来鼓励这项工作的组织的支持,包括来自惠普公司的支持,由艾拉·戈德斯坦和乔尔·伯恩鲍姆实现,以及来自 DARPA 的支持,由鲍勃·卡恩实现。
领取专属 10元无门槛券
手把手带您无忧上云