[lisp] scheme环境搭建与编译运行
搭建环境参考这篇
http://leochin.com/mac-scheme-install/
用文本编辑器写代码 保存文件格式为 .scm
在终端中cd到scm文件所在文件夹,
执行 (cf "scm_name")编译文件
然后执行 (load "scm_name.scm")加载文件,加载过程中会把文件执行一遍,就像Python一样,或者应该反过来说。
下面是几个lisp程序,参考书籍 SICP
求余:
(define (remainder m n)(
if (< (- m n) n)
(- m n)
(remainder (- m n) n)
)
)
牛顿法求开方:
(define (sqrt x)
(define (sqrt_iter guess x)
(if (good_enough? guess x)
guess
(sqrt_iter (improve_guess guess x)
x ))) (define (improve_guess guess x)
(average guess (/ x guess))) (define (average a b)
(/ (+ a b) 2)) (define (good_enough? guess x)
(< (abs (- (square guess) x)) 0.001)) (define (square x) (* x x)) (define (abs x)
(if (< x 0)
(- x)
x)
)
(sqrt_iter 1.0 x)
)
阶乘:
(define (factorial n)
(fact_iter 1 1 n)) (define (fact_iter res count n)
(if (> count n)
res
(fact_iter (* res count) (+ count 1) n)))
求幂:
(define (expt x n)(
expt_iter x 1 n)
) (define (expt_iter x res n)(
if (= n 0)
res
(expt_iter x (* x res) (- n 1))
)
)
最大公约数:
(define (gcd m n)(
if (= n 0)
m
(gcd n (remainder m n))
))
fibonacci:
(define (fib n)
(fib_iter 1 0 n) ) (define (fib_iter next pre count)(
if (= count 0)
pre
(fib_iter (+ pre next) next (- count 1))
))
(define (fib n)
(if (< n 2)
1
(+ (fib (- n 1))
(fib (- n 2)))))
[lisp] scheme环境搭建与编译运行的更多相关文章
- ionic —— 开发环境搭建并编译运行第一个APP
其实类似的环境已经玩了很多次了,最开始玩还是微信刚刚出来,那会儿没有智能机.只好安装一个模拟器,却只是为了注册一个微信.想想也就是够了~ 前前后后折腾了很多次,可是每一次都给人不一样的感觉,也许是这个 ...
- FFMPEG在嵌入式硬件上应用之 —— 基本环境搭建及编译
前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...
- OSG+VS2010+win7环境搭建---OsgEarth编译
OSG+VS2010+win7环境搭建---OsgEarth编译 转:http://www.cnblogs.com/hnfxs/p/3161261.html Win7下 osg+vs2010环境搭建 ...
- FFMPEG高级编程第一篇:环境搭建及编译
前段时间在翻看电脑里面资料时,发现了以前做的在嵌入式硬件上面运行以ffmepg为基础,以嵌入式硬件解码的多媒体播放工作,发现都快忘记完了.今日得闲整理温习了一下ffmpeg在嵌入式上的运用,这里给大家 ...
- S2X环境搭建与示例运行
S2X环境搭建与示例运行 http://dbis.informatik.uni-freiburg.de/forschung/projekte/DiPoS/S2X.html 环境 Maven proje ...
- 基于vlc sdk的二次开发--环境搭建、编译
前言 关于 搭建.编译VLC,不同的平台有不同的方法,可以参考wiki. 其中在windows下编译VLC有两种方式,MSYS+MinGW和CygWin.通过测试,最后决定采用MSYS+MinGW搭建 ...
- HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客
HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机 2014年06月02日 17:20 评论» 文章目录 Debian上安装 Ce ...
- 【转】Linux(ubuntu14.04)上编译Android4.4源码的环境搭建及编译全过程
原文网址:http://jileniao.net/linux-android-building.html sublime text让我伤心.本来很信任sublime text的自动保存功能,之前使用一 ...
- Tesseract环境搭建及编译安装
Tesseract环境搭建及编译安装 Tesseract源码都是C++源码:对于不咋会C++的人来说,这真是...虽然说语言有相通性,但是...哎!!!!! 分享出来,也希望对大家有所帮助. 环境:w ...
随机推荐
- 图形化调试工具DDD
ubuntu安装DDD: sudo apt-get install ddd If you still need to compile it for some reason you should be ...
- 检测传入字符串是否存在重复字符,返回boolean
检测传入字符串是否存在重复字符,返回boolean,比如"abc"返回true:"aac"返回false 这里提供两种思路: 第一种: import java. ...
- 无焦点下获取条码枪返回值的Hook(再次改良版)
针对上一个版本再次改良,上除掉无用代码,新手绝对可以看懂! using System; using System.Collections.Generic; using System.Linq; usi ...
- Hadoop生态圈-Azkaban部署实战
Hadoop生态圈-Azkaban部署实战 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Azkaban部署流程 1>.上传azkaban程序并创建解压目录 [yinz ...
- JQuery中2个等号与3个等号的区别
首先,== equality 等同,=== identity 恒等.==, 两边值类型不同的时候,要先进行类型转换,再比较.===,不做类型转换,类型不同的一定不等. 下面分别说明:先说 ===,这个 ...
- 关于MYSQL group by 分组按时间取最大值的实现方法
类如 有一个帖子的回复表,posts( id , tid , subject , message , dateline ) , id 为 自动增长字段, tid为该回复的主题帖子的id(外键关联), ...
- iOS 远程推送注册的小问题
iOS8有了新方法,用新方法后,用7.0版本运行会奔溃.只要加一句判断就ok: #ifdef __IPHONE_8_0 // 在 iOS 8 下注册苹果推送,申请推送权限. UIUserNotific ...
- python中的__iter__ __reversed__ __next__
__reversed__ 返回集合的倒叙迭代器,如果没有实现这个方法,reversed()会去使用__getitem__和__len__来实现 介绍__next__和 __iter__方法需要了解下可 ...
- cordova app 监听物理返回键
物理返回键指的是手机系统自带的返回按钮,通过cordova监听返回按钮操作,可以禁止某些页面的返回操作,以及实现点击两次返回按钮退出应用. var pageUrl = window.location. ...
- 3.微信公众号开发:配置与微信公众平台服务器交互的URL接口地址
微信开发基本原理: 1.首先有3个对象 分别是微信用户端 微信公众平台服务器 开发者服务器(也就是放自己代码的服务器) 三者间互相交互 2.微信公众平台服务器 充当中间者角色 (以被动回复消息为例) ...