不知道是不是《黑客与画家》的老pual太能忽悠了,一直想把他吹捧的lisp学习一下。

看common lisp和On lisp两本书也有一段时间了,中间还夹着看了一点SICP和land on lisp,但是一直感觉浑浑噩噩的,感觉没学到真正的东西,索性开始看代码吧。

一直在做驱动方面的工作,常想着什么时候抽空玩玩web的东西,所以打算先找一个关于web的lisp实现看着。搜了下,找了一个叫做“Hunchentoot”的东东:http://slack.net/~evenson/abcl/hunchentoot/

按照http://www.cnblogs.com/meteoric_cry/archive/2011/08/18/2143905.html & http://blog.csdn.net/keyboardota/article/details/7654512

的内容了解了下如何使用Hunchentoot(CL-USER>是需要敲入的Lispbox命令,其中step3安装过程出错时直接按5忽略之):

  1. CL-USER> (load "http://beta.quicklisp.org/quicklisp.lisp")
  2.  
  3. ==== quicklisp quickstart loaded ====
  4.  
  5. To continue with installation, evaluate: (quicklisp-quickstart:install)
  6.  
  7. For installation options, evaluate: (quicklisp-quickstart:help)
  8.  
  9. "http://beta.quicklisp.org/quicklisp.lisp"
  10. CL-USER> (ql:quickload "usocket")
  11. ; No value
  12. CL-USER> *
  13. NIL
  14. CL-USER> (ql:quickload "hunchentoot")
  15. ; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp/2011-01-10/systems.txt">
  16. ; 78.15KB
  17. ==================================================
  18. 80,026 bytes in 1.19 seconds (65.84KB/sec)
  19. ; Fetching #<URL "http://beta.quicklisp.org/dist/quicklisp/2011-01-10/releases.txt">
  20. ; 111.77KB
  21. ==================================================
  22. 114,451 bytes in 1.17 seconds (95.45KB/sec)
  23. To load "hunchentoot":
  24. Install 17 Quicklisp releases:
  25. alexandria babel bordeaux-threads cffi chunga cl+ssl
  26. cl-base64 cl-fad cl-ppcre flexi-streams hunchentoot md5
  27. rfc2388 trivial-backtrace trivial-features
  28. trivial-gray-streams usocket
  29. ; Fetching #<URL "http://beta.quicklisp.org/archive/usocket/2011-01-10/usocket-20110110-svn.tgz">
  30. ; 54.77KB
  31. ==================================================
  32. 56,082 bytes in 1.06 seconds (51.52KB/sec)
  33. ; Fetching #<URL "http://beta.quicklisp.org/archive/trivial-backtrace/2010-10-06/trivial-backtrace-20101006-git.tgz">
  34. ; 8.56KB
  35. ==================================================
  36. 8,770 bytes in 0.28 seconds (30.48KB/sec)
  37. ; Fetching #<URL "http://beta.quicklisp.org/archive/rfc2388/2010-10-06/rfc2388-20101006-http.tgz">
  38. ; 6.01KB
  39. ==================================================
  40. 6,154 bytes in 0.01 seconds (400.65KB/sec)
  41. ; Fetching #<URL "http://beta.quicklisp.org/archive/md5/2010-10-06/md5-20101006-git.tgz">
  42. ; 10.56KB
  43. ==================================================
  44. 10,809 bytes in 0.02 seconds (659.73KB/sec)
  45. ; Fetching #<URL "http://beta.quicklisp.org/archive/cl-ppcre/2010-10-06/cl-ppcre-2.0.3.tgz">
  46. ; 153.97KB
  47. ==================================================
  48. 157,665 bytes in 3.69 seconds (41.75KB/sec)
  49. ; Fetching #<URL "http://beta.quicklisp.org/archive/cl-fad/2010-12-07/cl-fad-0.6.4.tgz">
  50. ; 11.44KB
  51. ==================================================
  52. 11,712 bytes in 0.27 seconds (43.00KB/sec)
  53. ; Fetching #<URL "http://beta.quicklisp.org/archive/cl-base64/2010-10-06/cl-base64-20101006-git.tgz">
  54. ; 8.21KB
  55. ==================================================
  56. 8,408 bytes in 0.02 seconds (513.18KB/sec)
  57. ; Fetching #<URL "http://beta.quicklisp.org/archive/flexi-streams/2010-10-06/flexi-streams-1.0.7.tgz">
  58. ; 130.29KB
  59. ==================================================
  60. 133,413 bytes in 2.59 seconds (50.23KB/sec)
  61. ; Fetching #<URL "http://beta.quicklisp.org/archive/trivial-features/2010-10-06/trivial-features-20101006-darcs.tgz">
  62. ; 7.66KB
  63. ==================================================
  64. 7,839 bytes in 0.02 seconds (478.45KB/sec)
  65. ; Fetching #<URL "http://beta.quicklisp.org/archive/babel/2010-11-07/babel-20101107-darcs.tgz">
  66. ; 188.76KB
  67. ==================================================
  68. 193,290 bytes in 4.23 seconds (44.58KB/sec)
  69. ; Fetching #<URL "http://beta.quicklisp.org/archive/cffi/2010-11-07/cffi_0.10.6.tgz">
  70. ; 181.59KB
  71. ==================================================
  72. 185,952 bytes in 7.25 seconds (25.05KB/sec)
  73. ; Fetching #<URL "http://beta.quicklisp.org/archive/cl+ssl/2010-10-06/cl+ssl-20101006-cvs.tgz">
  74. ; 18.08KB
  75. ==================================================
  76. 18,513 bytes in 0.53 seconds (34.05KB/sec)
  77. ; Fetching #<URL "http://beta.quicklisp.org/archive/trivial-gray-streams/2010-10-06/trivial-gray-streams-20101006-cvs.tgz">
  78. ; 3.41KB
  79. ==================================================
  80. 3,489 bytes in 0.02 seconds (212.95KB/sec)
  81. ; Fetching #<URL "http://beta.quicklisp.org/archive/chunga/2010-10-06/chunga-1.1.1.tgz">
  82. ; 20.38KB
  83. ==================================================
  84. 20,871 bytes in 0.49 seconds (42.02KB/sec)
  85. ; Fetching #<URL "http://beta.quicklisp.org/archive/alexandria/2010-11-07/alexandria-20101107-git.tgz">
  86. ; 44.97KB
  87. ==================================================
  88. 46,045 bytes in 1.03 seconds (43.61KB/sec)
  89. ; Fetching #<URL "http://beta.quicklisp.org/archive/bordeaux-threads/2010-10-06/bordeaux-threads-0.8.0.tgz">
  90. ; 17.31KB
  91. ==================================================
  92. 17,721 bytes in 0.41 seconds (42.62KB/sec)
  93. ; Fetching #<URL "http://beta.quicklisp.org/archive/hunchentoot/2010-10-06/hunchentoot-1.1.1.tgz">
  94. ; 136.34KB
  95. ==================================================
  96. 139,617 bytes in 3.41 seconds (40.03KB/sec)
  97. ; Loading "hunchentoot"
  98. ..................................................
  99. [package alexandria.0.dev]........................
  100. ..................................................
  101. ..................................................
  102. [package bordeaux-threads]........................
  103. [package usocket].................................
  104. [package trivial-backtrace].......................
  105. [package rfc2388].................................
  106. [package md5].....................................
  107. [package trivial-gray-streams]....................
  108. [package flexi-streams]...........................
  109. ..................................................
  110. ..................................................
  111. ..................................................
  112. ..................................................
  113. [package babel-encodings].........................
  114. [package babel]...................................
  115. ..................................................
  116. ..................................................
  117. ..................................................
  118. ..................................................
  119. ..................................................
  120. ..................................................
  121. ..................................................
  122. ..................................................
  123. ..................................................
  124. ..................................................
  125. ..................................................
  126. ..................................................
  127. ..................................................
  128. ..................................................
  129. ..................................................
  130. ..................................................
  131. ..................................................
  132. [package cffi-sys]................................
  133. [package cffi-callbacks]..........................
  134. [package cffi]....................................
  135. ..................................................
  136. ..................................................
  137. [package cffi-features]...........................
  138. [package cl+ssl]
  139. Invoking restart: Skip loading #P"C:/Documents and Settings/Administrator/Application Data/common-lisp/cache/ccl-1.6-f94-win-x86/c/PROGRA~1/LISPBO~1.7/quicklisp/dists/quicklisp/software/cl+ssl-20101006-cvs/reload.wx32fsl"
  140. ..................................
  141. [package cl-ppcre]................................
  142. ..................................................
  143. ..................................................
  144. [package cl-fad]..................................
  145. [package cl-fad-test].............................
  146. [package cl-fad-ccl]..............................
  147. [package cl-base64]...............................
  148. [package chunga]..................................
  149. [package url-rewrite].............................
  150. [package hunchentoot].............................
  151. ............
  152. Invoking restart: Return to SLIME's top level.
  153. ; Evaluation aborted on #<CCL::PARSE-UNKNOWN-TYPE #xD43CD76>.
  154. ; Evaluation aborted on #<CCL::PARSE-UNKNOWN-TYPE #xD43CD76>.
  155. ; Evaluation aborted on #<CCL::PARSE-UNKNOWN-TYPE #xD43CD76>.
  156. ("hunchentoot")
  157. CL-USER>
  158. CL-USER>
  159. CL-USER>
  160. CL-USER> (asdf:load-system "hunchentoot")
  161. T
  162. CL-USER> (hunchentoot:start (make-instance 'hunchentoot:acceptor :port 4242))
  163. #<ACCEPTOR (host *, port 4242)>
  164. CL-USER>

  接下来就应该开始read source code的旅程了,但在这之前,可能还需要把hunchentoot主页上的内容,尤其是几篇tutorial看一下。

很期待接下来的代码阅读过程,相信应该和读OS一样精彩。

开始lisp的旅程的更多相关文章

  1. Lisp和SICP

         大概不少programmer都看过<黑客与画家>,作者用了整整一章的篇幅讨论Lisp的强大.我自然就会手痒痒.      几个月前,几天内攻城略地搞定了Python,用的方法便是 ...

  2. ANSI Common Lisp Practice - My Answers - Chatper - 3

    Ok, Go ahead. 1 (a) (b) (c) (d) 2 注:union 在 Common Lisp 中的作用就是求两个集合的并集.但是这有一个前提,即给的两个列表已经满足集合的属性了.具体 ...

  3. Lisp永远成不了编程主流语言

        Lisp语言是第二古老的高级编程语言.许多的黑客和开发者对Lisp推崇备至,Paul Graham甚至说"编程语言现在的发展,不过刚刚赶上1958年Lisp语言的水平". ...

  4. 读 [The Root of Lisp]

    首先,在对 Lisp 有一丢丢的了解下读这篇文章会大大激发你学下去的欲望.之后可以看作者的著作<ANSI Common Lisp>. 想要体会一下 Lisp 的强大,本文是不二之选. Co ...

  5. 在Visual Lisp中处理自动化错误

    Handling Automation errors in Visual LISP 翻译自原文Kean's blog:http://through-the-interface.typepad.com/ ...

  6. some simple recursive lisp programs

    1. Write a procedure count-list to count the number of elements in a list (defun count-list (numbers ...

  7. 搭建fedora开发环境 common lisp, c++, go

    第三方软件库: http://download1.rpmfusion.org/free/fedora/releases/25/Everything/x86_64/os/repoview/index.h ...

  8. SBCL 从REPL 中提取lisp代码

    1, 在emacs C-x C-W 文件另存为保存所有REPL过程 由于 (load "foo.lisp")时只有定义语句可以正确执行, 执行语句不可正确被 (load " ...

  9. 《On Lisp》第四章第三节图4.6中的rmapcar函数中展现的apply陷阱

    (defun rmapcar (fn &rest args) (if (some #'atom args) (apply fn args) (apply #'mapcar #'(lambda ...

随机推荐

  1. js学习--浏览器对象计时器setInterval()与setTimeout()的使用与区别

    一.setInterval()与setTimeout()的定义: 二.setInterval()与setTimeout()的使用:    1.setInterval()与clearInterval() ...

  2. 桂电在线-转变成bootstrap版2(记录学习bootstrap)

    下载bootstrap框架https://github.com/twbs/bootstrap 或者 http://getbootstrap.com/ 拷贝模板 修改基本模板 语言zh-cn,标题,描述 ...

  3. C# 仿迅雷风格选项卡

    private void listView1_SelectedIndexChanged(object sender, EventArgs e) { listView1.FullRowSelect = ...

  4. Day20 Django之Model多对多、中间件、缓存、信号和分页

    一.Form补充 class IndexForm(forms.Form): # c = [ # (1, 'CEO'), # (2, 'CTO') # ] # 静态字段,属于IndexForm类,即使数 ...

  5. Amazon's NoSQL Journey and AWS Operations

    AWS: Amazon Web Services 提供了一整套基础设施和应用程序服务,使您几乎能够在云中运行一切应用程序:从企业应用程序和大数据项目,到社交游戏和移动应用程序. 计算类: EC2:弹性 ...

  6. android小知识

    string 与 []byte 互转: public String BytesToString(byte[] data) { return new String(data); } public byt ...

  7. C#事件(Event)学习日记

    event 关键字的来由,为了简化自定义方法的构建来为委托调用列表增加和删除方法. 在编译器处理 event 关键字的时候,它会自动提供注册和注销方法以及任何必要的委托类型成员变量. 这些委托成员变量 ...

  8. python重要的函数代码块

    注意:现在python3.3.5中print打印语句有了新写法: 1. python指定生成随机数 >>> import random >>> >>&g ...

  9. Python、Lua和Ruby——脚本大P.K.

    转自Python.Lua和Ruby--脚本大P.K. Python versus Lua Versus Ruby Python.Lua和Ruby--脚本大P.K. Tom Gutschmidt 著 赖 ...

  10. [wikioi]数字三角形

    http://wikioi.com/problem/1220/ 最基本经典的DP题目,唯一有点意思的是,自底向上计算会更简洁.另外对这种+方式累计的DP,可以直接把原来的存进去,然后再加,本质是不用在 ...