一直没有搞懂,common lisp为什么用把函数和变量放在不同的命名空间?


#21

scheme拿来教学完美无瑕. 老师:“咱们不用讲语法哈,来自己看5分钟…好了接下来我们讲讲XXXXX”.


#22

所以这句有浓浓模仿 RMS 名言感觉的话是谁说的?


#23

John McCarthy,RMS,Guy L. Steele Jr. 有这么说吗? 自己开除然后让别人闭嘴的可能不是屑吧。

(求你别乱写别人名字,整些龙鸣缩写了)


#24

不好意思,不熟 RMS,比有些人对 Scheme 的不熟悉程度还高


#25

有,你要不要查查


#26

抄袭需要熟悉原作者🐎?


#27

好像需要哦😊


#28

那你其实是熟悉 RMS 的,我懂了,就和我说开除 Scheme 是一个意思。


#29

真不熟悉,我连 Emacs 都用不熟


#30

对对,我用 Emacs 只会用鼠标点菜单


#31

卧槽,新加坡都在教 Python 了,你们那教学咋还在用 Scheme


#32

哈哈哈哈,我教物理的,当年题库和内部服务器都是scheme写的,用着顺手懒了也不想动了,会教一下新老师怎么用.有些物理竞赛学生也会教一些plot之类的,drracket一步到位方便.别的语言全得专门开个课,就有点扯远了…


#33

为什么?求详解


#34

It’s just trolling


#35

就拿Elisp举例子吧

ELISP> (macroexpand-all '(defun a ()))
(defalias 'a
    #'(lambda nil nil))

够不够indiana style?敢不敢相信?

因为S表达式的确在表达多重函数嵌套调用的时候有缺陷啊,比如

((a b (c ((d f) g) (p (h)))))

你能一眼看出来这个的调用关系么?

假如要写一个返回函数的函数。用indiana-style一眼看出来返回啥么,两个lambda还行,如果多套几个lambda,那就要手动计算下lambda的嵌套层级了。

(define return-a-function
    (lambda (a ...)
      (lambda ()
        ...)))

#36

说明 S exp 太垃圾了,我們还是用 de Bruijn indices 吧。


#37

我寻思用上funcall之后和de Bruin indices长得差不多(一转)


#38
<<h>p><<<g><f>d>c><b>a

可读性更强了 (强行


#39

既然你觉得够,那就够吧。

看不出来吗?

Indiana sytle 本来就倾向于教学用途,但是看出来 lambda 们在干什么不是问题吧(和上个问题类似)(至少我觉得它更合适教学用途,虽然有些人好像在生产环境中也用这种风格)


#40

你觉得能那就能,不狡辩。至少我觉得C系的写法比这个要一目了然

a(b, c(d(f)(g)), p(h()))()