由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - golang上的Clojure
相关主题
想学函数语言和高层次抽象的同学看过来跳spacemacs的坑了
clojure 做数据分析go真是好东西
clojure这种东西只能自己一个人单干大家最近学啥呢
未来15年,服务器端语言,除了标准的java,我看好scala,go 前端乱弹,二爷的想法
GoLang, Scala, Swift, Rust 哪个能在2015有关键性的突破?golang里面 函数received type关于指针和非指针有什么难的。
functional programming lang里面 如果我说以後会大面积火的,还是lisp (clojure)Node之父改行golang了
王垠水平见长这年头有哪几个公司是用函数式编程的呢?
有人用spacemacs吗这次Scala学Clojure有点不地道了
相关话题的讨论汇总
话题: clojure话题: lisp话题: 上有话题: golang话题: json
进入Programming版参与讨论
1 (共1页)
h*i
发帖数: 3446
1
需要用Clojure来写脚本的话,这个joker不错,内存用得少,快。当然没有实现
Clojure所有的特性,但用来写脚本不错。
https://github.com/candid82/joker
d*******r
发帖数: 3299
2
为啥不用 scheme on golang, 也就是基本的 Lisp, 不是 clojure.
我以前考虑过这种 idea, 因为 golang 之前连个 generic template 都没有, 倒是可
以用 lisp 做代码生成之类.
按照我的理解,clojure 是 lisp for JVM (以前还是 C# 上也有), 做到 golang 上比
一般的 lisp 有啥优势?

【在 h*i 的大作中提到】
: 需要用Clojure来写脚本的话,这个joker不错,内存用得少,快。当然没有实现
: Clojure所有的特性,但用来写脚本不错。
: https://github.com/candid82/joker

h*i
发帖数: 3446
3
Clojure不是仅仅是Lisp,更多是这个数据为中心的编程风格。
我认为Clojure最重要的特征,就是几种基本的immutable data structure作为核心的
语法结构。在传统的list ()之外,加上vector [],map {} 和 set #{}作为基本的
语法结构,这些数据结构本身还可以当函数用。这就从Lisp传统的code is data特性,
扩展到了data is also code特性。"In Clojure, code is data and data is code",
data和code就完全是同一个东西了,把data oriented programming发展到了极致。
事实上,很多Lisp卫道士拒不承认Clojure是Lisp,就是因为加了这两对符号,[]和{}
,貌似小改变,其实把编程风格完全改变了。
这种数据结构同时也是代码本身的编程风格,是非常独特的。Clojure编程往往不需要
OOP,因为一个map其实就可以当Object用。不像OOP的oboject,其操作方法是特殊的,
只能用在这个object上,任何重用都是很复杂的,要搞各种design pattern。Clojure
用map就完了,操作这些普通map只需一些普遍性的函数就够了,get, get-in, update,
update-in, merge, group-by, zipmap等等。map是object, vector是collection. 就
这两种数据结构,80%的用例就都满足了。其实这和JSON成了事实上的数据标准一个道
理,Clojure感觉就是用JSON来编程,这个JSON同时又是是活的代码,而不是死数据,
可以随意操控。
这种以数据为中心的编程风格,非常强大,同时又很简单,一旦领会了,很难离开。所
以人们在各种环境上都要搞Clojure。只要有Clojure这种编程风格和语法结构,都可以
算作Clojure的方言。

【在 d*******r 的大作中提到】
: 为啥不用 scheme on golang, 也就是基本的 Lisp, 不是 clojure.
: 我以前考虑过这种 idea, 因为 golang 之前连个 generic template 都没有, 倒是可
: 以用 lisp 做代码生成之类.
: 按照我的理解,clojure 是 lisp for JVM (以前还是 C# 上也有), 做到 golang 上比
: 一般的 lisp 有啥优势?

h*i
发帖数: 3446
4
Clojure几乎在各种平台上都有。Javascript上有,C#上有, python上有, Erlang上
有,Racket上有,golang上有。连其他Lisp上都有,Common Lisp上也有, Scheme上有。
所以它不仅仅是个Lisp,是有它自己的壁龛的,就是我说的data oriented
programming,目前没有什么其他语言在这个设计空间,如果有,也是其方言,可见它
在这个空间站位很准。

【在 d*******r 的大作中提到】
: 为啥不用 scheme on golang, 也就是基本的 Lisp, 不是 clojure.
: 我以前考虑过这种 idea, 因为 golang 之前连个 generic template 都没有, 倒是可
: 以用 lisp 做代码生成之类.
: 按照我的理解,clojure 是 lisp for JVM (以前还是 C# 上也有), 做到 golang 上比
: 一般的 lisp 有啥优势?

x***4
发帖数: 1815
5
借问问clojure用那个ide/editor好?不想用emacs。cursive怎样?

有。

【在 h*i 的大作中提到】
: Clojure几乎在各种平台上都有。Javascript上有,C#上有, python上有, Erlang上
: 有,Racket上有,golang上有。连其他Lisp上都有,Common Lisp上也有, Scheme上有。
: 所以它不仅仅是个Lisp,是有它自己的壁龛的,就是我说的data oriented
: programming,目前没有什么其他语言在这个设计空间,如果有,也是其方言,可见它
: 在这个空间站位很准。

c*******v
发帖数: 2599
6
Android上没有。Lisp系统完美错过mobile.


: Clojure几乎在各种平台上都有。Javascript上有,C#上有, python上有,
Erlang上

: 有,Racket上有,golang上有。连其他Lisp上都有,Common Lisp上也有,
Scheme上有。

: 所以它不仅仅是个Lisp,是有它自己的壁龛的,就是我说的data oriented

: programming,目前没有什么其他语言在这个设计空间,如果有,也是其方言,
可见它

: 在这个空间站位很准。



【在 h*i 的大作中提到】
: Clojure几乎在各种平台上都有。Javascript上有,C#上有, python上有, Erlang上
: 有,Racket上有,golang上有。连其他Lisp上都有,Common Lisp上也有, Scheme上有。
: 所以它不仅仅是个Lisp,是有它自己的壁龛的,就是我说的data oriented
: programming,目前没有什么其他语言在这个设计空间,如果有,也是其方言,可见它
: 在这个空间站位很准。

n*****3
发帖数: 1584
7
cursive is the best ..
I used sublime for toy task/play too.

【在 x***4 的大作中提到】
: 借问问clojure用那个ide/editor好?不想用emacs。cursive怎样?
:
: 有。

h*i
发帖数: 3446
8
有过。不过现在大家用react native搞clojurescript,一个代码,同时用在web,iOS
和android


: Android上没有。Lisp系统完美错过mobile.

: Erlang上

: Scheme上有。

: 可见它



【在 c*******v 的大作中提到】
: Android上没有。Lisp系统完美错过mobile.
:
:
: Clojure几乎在各种平台上都有。Javascript上有,C#上有, python上有,
: Erlang上
:
: 有,Racket上有,golang上有。连其他Lisp上都有,Common Lisp上也有,
: Scheme上有。
:
: 所以它不仅仅是个Lisp,是有它自己的壁龛的,就是我说的data oriented
:
: programming,目前没有什么其他语言在这个设计空间,如果有,也是其方言,
: 可见它
:
: 在这个空间站位很准。

c*******v
发帖数: 2599
9
实践上挺难。react native自己是不是能走下去也不清楚。


: 有过。不过现在大家用react native搞clojurescript,一个代码,同时用在web
,iOS

: 和android

:

【在 h*i 的大作中提到】
: 有过。不过现在大家用react native搞clojurescript,一个代码,同时用在web,iOS
: 和android
:
:
: Android上没有。Lisp系统完美错过mobile.
:
: Erlang上
:
: Scheme上有。
:
: 可见它
:

h*i
发帖数: 3446
10
我没用过,不过看上去不难,http://cljsrn.org/
但我的主要的论点,不是讨论具体的这个那个技术的问题,而是Clojure是个寄生性的
语言,不论什么技术流行,很大的可能性会有人来搞个Clojure的程序员界面。
golang? 有人搞个joker; unit3d? 有人搞个arcadia;deep learning? 多个Clojure的
库选项;k8s? 很多Clojure选项。
原因也说了,就是对于很多有经验的程序员,Clojure是他们最后一个语言。你可以把
Clojure看成是个普适的框架,你再也不用学新框架了,因为总会有人来把不论什么新
东西包装成你熟悉的Clojure的数据结构和函数,对你来说,都是一样的得心应手。
没有很多语言有这种“最后的语言”的地位。

web

【在 c*******v 的大作中提到】
: 实践上挺难。react native自己是不是能走下去也不清楚。
:
:
: 有过。不过现在大家用react native搞clojurescript,一个代码,同时用在web
: ,iOS
:
: 和android
:
:

相关主题
王垠水平见长go真是好东西
有人用spacemacs吗大家最近学啥呢
跳spacemacs的坑了乱弹,二爷的想法
进入Programming版参与讨论
h*i
发帖数: 3446
11
cursive我没用过,口碑很好,个人自用是免费的,公司用要收费。
我司目前都是用Spacemacs的。
这之前,我用了几年vim的fireplace。但我以前也有实习生用sublime的。
不论用什么编辑器,最关键的是要有以REPL为中心的运行环境,意思是说,在编辑器里
面写代码,然后能用快捷键evaluate代码,有了这种立即的反馈,才能体会到Clojure
的好处。

【在 x***4 的大作中提到】
: 借问问clojure用那个ide/editor好?不想用emacs。cursive怎样?
:
: 有。

n***p
发帖数: 110
12
Cursive + ideaVim 够用了。
Spacemacs有时候比较慢

Clojure

【在 h*i 的大作中提到】
: cursive我没用过,口碑很好,个人自用是免费的,公司用要收费。
: 我司目前都是用Spacemacs的。
: 这之前,我用了几年vim的fireplace。但我以前也有实习生用sublime的。
: 不论用什么编辑器,最关键的是要有以REPL为中心的运行环境,意思是说,在编辑器里
: 面写代码,然后能用快捷键evaluate代码,有了这种立即的反馈,才能体会到Clojure
: 的好处。

d*******r
发帖数: 3299
13
看着大牛的介绍,还挺想学下, 不过工作中貌似挺难碰到 Clojure shop. 除了工作,一
般还有啥机会用?
不过我也有点理解Lisp原教旨为啥要反对加[]{}, 他们是不是觉得前置运算符也能做这
个?
Lisp minimal 的语法结构, 本身就是为了达到: 你基本只用前置运算符直接写
Abstract Syntax Tree
传统 OOP 确实很蠢笨, 尤其以鼓励 继承+design patterns 那一套, 笨死了.

,

【在 h*i 的大作中提到】
: Clojure不是仅仅是Lisp,更多是这个数据为中心的编程风格。
: 我认为Clojure最重要的特征,就是几种基本的immutable data structure作为核心的
: 语法结构。在传统的list ()之外,加上vector [],map {} 和 set #{}作为基本的
: 语法结构,这些数据结构本身还可以当函数用。这就从Lisp传统的code is data特性,
: 扩展到了data is also code特性。"In Clojure, code is data and data is code",
: data和code就完全是同一个东西了,把data oriented programming发展到了极致。
: 事实上,很多Lisp卫道士拒不承认Clojure是Lisp,就是因为加了这两对符号,[]和{}
: ,貌似小改变,其实把编程风格完全改变了。
: 这种数据结构同时也是代码本身的编程风格,是非常独特的。Clojure编程往往不需要
: OOP,因为一个map其实就可以当Object用。不像OOP的oboject,其操作方法是特殊的,

d*******r
发帖数: 3299
14
这个不错啊,还可以放到 JetBrains 里
https://cursive-ide.com/

Clojure

【在 h*i 的大作中提到】
: cursive我没用过,口碑很好,个人自用是免费的,公司用要收费。
: 我司目前都是用Spacemacs的。
: 这之前,我用了几年vim的fireplace。但我以前也有实习生用sublime的。
: 不论用什么编辑器,最关键的是要有以REPL为中心的运行环境,意思是说,在编辑器里
: 面写代码,然后能用快捷键evaluate代码,有了这种立即的反馈,才能体会到Clojure
: 的好处。

d*******r
发帖数: 3299
15
我也觉得 Lisp like 语言可以作为最强寄生语言, 因为 minimal syntax
没想到现在 Clojure community 就是在往这个方向发展?

Clojure的

【在 h*i 的大作中提到】
: 我没用过,不过看上去不难,http://cljsrn.org/
: 但我的主要的论点,不是讨论具体的这个那个技术的问题,而是Clojure是个寄生性的
: 语言,不论什么技术流行,很大的可能性会有人来搞个Clojure的程序员界面。
: golang? 有人搞个joker; unit3d? 有人搞个arcadia;deep learning? 多个Clojure的
: 库选项;k8s? 很多Clojure选项。
: 原因也说了,就是对于很多有经验的程序员,Clojure是他们最后一个语言。你可以把
: Clojure看成是个普适的框架,你再也不用学新框架了,因为总会有人来把不论什么新
: 东西包装成你熟悉的Clojure的数据结构和函数,对你来说,都是一样的得心应手。
: 没有很多语言有这种“最后的语言”的地位。
:

d*******r
发帖数: 3299
16
"其实这和JSON成了事实上的数据标准一个道理,Clojure感觉就是用JSON来编程,
这个JSON同时又是是活的代码,而不是死数据,可以随意操控。"
当年使劲用 Node.js 的时候, 觉得 JSON 编程还是相当爽的,哈哈
不过 Node.js 这个 community 的人做的东西太 fragile, 后来就弃坑了

,

【在 h*i 的大作中提到】
: Clojure不是仅仅是Lisp,更多是这个数据为中心的编程风格。
: 我认为Clojure最重要的特征,就是几种基本的immutable data structure作为核心的
: 语法结构。在传统的list ()之外,加上vector [],map {} 和 set #{}作为基本的
: 语法结构,这些数据结构本身还可以当函数用。这就从Lisp传统的code is data特性,
: 扩展到了data is also code特性。"In Clojure, code is data and data is code",
: data和code就完全是同一个东西了,把data oriented programming发展到了极致。
: 事实上,很多Lisp卫道士拒不承认Clojure是Lisp,就是因为加了这两对符号,[]和{}
: ,貌似小改变,其实把编程风格完全改变了。
: 这种数据结构同时也是代码本身的编程风格,是非常独特的。Clojure编程往往不需要
: OOP,因为一个map其实就可以当Object用。不像OOP的oboject,其操作方法是特殊的,

d*******r
发帖数: 3299
17
大牛能说说在实际应用中, Lisp 的各个方言, 一般用来干啥么?
比如 Comman Lisp, Scheme, Clojure
Clojure 看样子一般用来做数据处理会比较爽?

,

【在 h*i 的大作中提到】
: Clojure不是仅仅是Lisp,更多是这个数据为中心的编程风格。
: 我认为Clojure最重要的特征,就是几种基本的immutable data structure作为核心的
: 语法结构。在传统的list ()之外,加上vector [],map {} 和 set #{}作为基本的
: 语法结构,这些数据结构本身还可以当函数用。这就从Lisp传统的code is data特性,
: 扩展到了data is also code特性。"In Clojure, code is data and data is code",
: data和code就完全是同一个东西了,把data oriented programming发展到了极致。
: 事实上,很多Lisp卫道士拒不承认Clojure是Lisp,就是因为加了这两对符号,[]和{}
: ,貌似小改变,其实把编程风格完全改变了。
: 这种数据结构同时也是代码本身的编程风格,是非常独特的。Clojure编程往往不需要
: OOP,因为一个map其实就可以当Object用。不像OOP的oboject,其操作方法是特殊的,

h*i
发帖数: 3446
18
最近的调查60%以上的Clojure用户是用在工作中。很多公司都有用Clojure的部门。大
公司如Apple, Cisco, Walmart,小公司就很多了,现在初创公司用Clojure算是一个保
守的选项。
Clojure是个很简单的语言,所以招人的时候,不会说“需要多少年的Clojure经验“,
都是招好的程序员,招来再现学。一般2个礼拜就可以干点事了,3个月完全胜任了。
Clojure主要是个工作语言,是一个consultant设计来给consultant用的语言,目的是
用最少的时间来干出更好更多的活,以得到更大的利润。如果目的不同,其实不一定合
适。

【在 d*******r 的大作中提到】
: 看着大牛的介绍,还挺想学下, 不过工作中貌似挺难碰到 Clojure shop. 除了工作,一
: 般还有啥机会用?
: 不过我也有点理解Lisp原教旨为啥要反对加[]{}, 他们是不是觉得前置运算符也能做这
: 个?
: Lisp minimal 的语法结构, 本身就是为了达到: 你基本只用前置运算符直接写
: Abstract Syntax Tree
: 传统 OOP 确实很蠢笨, 尤其以鼓励 继承+design patterns 那一套, 笨死了.
:
: ,

h*i
发帖数: 3446
19
Clojure设计的第一天就是要作一个拥抱宿主的寄生语言。

【在 d*******r 的大作中提到】
: 我也觉得 Lisp like 语言可以作为最强寄生语言, 因为 minimal syntax
: 没想到现在 Clojure community 就是在往这个方向发展?
:
: Clojure的

h*i
发帖数: 3446
20
不知道其他的Lisp方言。我是从C, Java过来的,以前没接触过Lisp,以下是我知道的
一点点。
scheme过去主要是用来教学的。曾几何时,scheme是美国各CS名校的入门课程,SICP是
大名鼎鼎的教科书。可惜现在都改成了用python,我觉得这是造成美国最近的CS毕业生
质量直线下降的直接原因。老实说,在我们这些老人眼里,只会python的人根本就不算
会编程的人。不教SICP这套系统思维,是不能成为良好的软件工程师的。
Common Lisp主要是用在AI上吧,Lisp的兴起和衰落在早期主要和AI的兴起和衰落同步
。y combinator的创始人就是用common lisp起家的,作为秘密武器,他写的一系列的
Lisp软文,也帮助了Clojure的兴起。
Clojure算是第一个与AI完全无关的,比较有广泛应用的Lisp,当然借助了它的寄生性
,还有就是它的创造人是个很好的技术推销员,作的talk总是能引起广泛的注意和追捧
,有自己的粉丝团:
https://github.com/tallesl/Rich-Hickey-fanclub
https://changelog.com/posts/rich-hickeys-greatest-hits
Clojure是个数据为中心的编程语言,主要适用场合是所谓的in situ的商业编程,就是
我常说的,用来对付各种乱七八糟混乱且不合逻辑的经常改变的商业需求。这其实是绝
大部分程序员每天干的事。如果你很幸运,不属于这绝大部分可怜的程序员,比如你是
为Google工作的,不需要对付这些,那Clojure没有什么你需要的东西。
当然了,Rich Hickey自己说得更好,你还是看他的talk吧:https://www.youtube.com
/watch?v=VSdnJDO-xdg

【在 d*******r 的大作中提到】
: 大牛能说说在实际应用中, Lisp 的各个方言, 一般用来干啥么?
: 比如 Comman Lisp, Scheme, Clojure
: Clojure 看样子一般用来做数据处理会比较爽?
:
: ,

相关主题
golang里面 函数received type关于指针和非指针有什么难的。这次Scala学Clojure有点不地道了
Node之父改行golang了一直不习惯immutability
这年头有哪几个公司是用函数式编程的呢?vert.x平台上的新东西很让人兴奋阿
进入Programming版参与讨论
d*******r
发帖数: 3299
21
多谢解答,涨知识了

【在 h*i 的大作中提到】
: 不知道其他的Lisp方言。我是从C, Java过来的,以前没接触过Lisp,以下是我知道的
: 一点点。
: scheme过去主要是用来教学的。曾几何时,scheme是美国各CS名校的入门课程,SICP是
: 大名鼎鼎的教科书。可惜现在都改成了用python,我觉得这是造成美国最近的CS毕业生
: 质量直线下降的直接原因。老实说,在我们这些老人眼里,只会python的人根本就不算
: 会编程的人。不教SICP这套系统思维,是不能成为良好的软件工程师的。
: Common Lisp主要是用在AI上吧,Lisp的兴起和衰落在早期主要和AI的兴起和衰落同步
: 。y combinator的创始人就是用common lisp起家的,作为秘密武器,他写的一系列的
: Lisp软文,也帮助了Clojure的兴起。
: Clojure算是第一个与AI完全无关的,比较有广泛应用的Lisp,当然借助了它的寄生性

d******c
发帖数: 2407
22
clojure 的edn可以看成更好的json. json 问题很多。
https://github.com/edn-format/edn
我之前总觉得clojure代码读起来比较费劲,看到edn的描述之后明白了一些

【在 d*******r 的大作中提到】
: "其实这和JSON成了事实上的数据标准一个道理,Clojure感觉就是用JSON来编程,
: 这个JSON同时又是是活的代码,而不是死数据,可以随意操控。"
: 当年使劲用 Node.js 的时候, 觉得 JSON 编程还是相当爽的,哈哈
: 不过 Node.js 这个 community 的人做的东西太 fragile, 后来就弃坑了
:
: ,

d*******r
发帖数: 3299
23
Marked, 多谢

【在 d******c 的大作中提到】
: clojure 的edn可以看成更好的json. json 问题很多。
: https://github.com/edn-format/edn
: 我之前总觉得clojure代码读起来比较费劲,看到edn的描述之后明白了一些

h*i
发帖数: 3446
24
edn就是Clojure 代码,Clojure代码就是edn。
同一个edn,如果eval它,那它就是Clojure程序,如果read它,那它就是edn数据。
Clojure代码其实跟数据结构是一样的,没有什么特殊的操作符号,或者statement什么
的,这对不熟悉Lisp的程序员来说,这个mental model是很alien的。
甚至可能会反感。有个脚本语言叫tcl/tk,也有类似特性,我记得很多年前我有点反感
它,觉得有点把世界搅乱了的感觉,没有明确的编译前和编译后的界限。
现在才知道,这其实是power。
所以年轻人,keep open mind很重要。

【在 d******c 的大作中提到】
: clojure 的edn可以看成更好的json. json 问题很多。
: https://github.com/edn-format/edn
: 我之前总觉得clojure代码读起来比较费劲,看到edn的描述之后明白了一些

c*******v
发帖数: 2599
25
求一个未化简的多项式f(x)的常数项,有两个办法。
一个是当作字符串语法分析,收集以及合并系数。
另一个是eval f(0)。
现在DL走的是后者。原因是没有Lisp机器,所以前者
速度不行。
eval在 C也可以有。
按Ken Thompson的说法,用escape分辨
字符串(数据)和程序就可以了。
Cpp模板什么的本身是functional的。应该更方便
就可以搞出来。

【在 h*i 的大作中提到】
: edn就是Clojure 代码,Clojure代码就是edn。
: 同一个edn,如果eval它,那它就是Clojure程序,如果read它,那它就是edn数据。
: Clojure代码其实跟数据结构是一样的,没有什么特殊的操作符号,或者statement什么
: 的,这对不熟悉Lisp的程序员来说,这个mental model是很alien的。
: 甚至可能会反感。有个脚本语言叫tcl/tk,也有类似特性,我记得很多年前我有点反感
: 它,觉得有点把世界搅乱了的感觉,没有明确的编译前和编译后的界限。
: 现在才知道,这其实是power。
: 所以年轻人,keep open mind很重要。

T*******x
发帖数: 8565
26
嗯,edn是很好,跟json也很相似,python也有同样的数据结构。java的数据结构就很
不方便了。
你前面说map作为object,我怎么觉得是list作为object,而map作为list processing?

【在 h*i 的大作中提到】
: edn就是Clojure 代码,Clojure代码就是edn。
: 同一个edn,如果eval它,那它就是Clojure程序,如果read它,那它就是edn数据。
: Clojure代码其实跟数据结构是一样的,没有什么特殊的操作符号,或者statement什么
: 的,这对不熟悉Lisp的程序员来说,这个mental model是很alien的。
: 甚至可能会反感。有个脚本语言叫tcl/tk,也有类似特性,我记得很多年前我有点反感
: 它,觉得有点把世界搅乱了的感觉,没有明确的编译前和编译后的界限。
: 现在才知道,这其实是power。
: 所以年轻人,keep open mind很重要。

h*i
发帖数: 3446
27
你说的map是map这个函数把?
我说的map是{},这是实用Clojure里面最常用的数据结构,当object用来作为世界模型
的。
注意到我说80%用例就够了的数据结构的时候,我只说了两个:map{} and vector [].
list其实很少用来作为模拟世界的数据,因为list是特殊的,是有“运行”的概念的,
有很多的麻烦,经常需要quote起来,不适合用来作数据,所以Clojure严格区分list和
vector。
数据驱动的DSL,比如hiccup,主要由vector和map构成。还有一种更像程序的DSL, 这
些里面会有一些list来定义可执行的东西,defxyz,defabc, 之类,也仅限于此。
不是FP的话,其实显式的数据结构用处不大。
因为如果数据是mutable的话, 其实真正不变的只是个内存地址,变量表示的是个内存
地址,而不是其内容,所以python有数据结构也不能当JSON来用,一个显式结构只能初
始化用一下,更重要的还是那个变量名。

processing?

【在 T*******x 的大作中提到】
: 嗯,edn是很好,跟json也很相似,python也有同样的数据结构。java的数据结构就很
: 不方便了。
: 你前面说map作为object,我怎么觉得是list作为object,而map作为list processing?

h*i
发帖数: 3446
28
呵呵,非Lisp的语言,你可以有这个也可以有那个,但只能是half assed,就是魏老师
说的,不闭环。
因为你的语法太复杂了,人类不能用它来作Lisp能作的事情,神族也许可以,人类不行。
就这怎么简单个事。
Greenspun's tenth rule: Any sufficiently complicated C or Fortran program
contains an ad-hoc, informally-specified, bug-ridden, slow implementation of
half of Common Lisp.

【在 c*******v 的大作中提到】
: 求一个未化简的多项式f(x)的常数项,有两个办法。
: 一个是当作字符串语法分析,收集以及合并系数。
: 另一个是eval f(0)。
: 现在DL走的是后者。原因是没有Lisp机器,所以前者
: 速度不行。
: eval在 C也可以有。
: 按Ken Thompson的说法,用escape分辨
: 字符串(数据)和程序就可以了。
: Cpp模板什么的本身是functional的。应该更方便
: 就可以搞出来。

T*******x
发帖数: 8565
29
对,我说的是map-reduce的map。对,list我也主要是指vector,map。

【在 h*i 的大作中提到】
: 你说的map是map这个函数把?
: 我说的map是{},这是实用Clojure里面最常用的数据结构,当object用来作为世界模型
: 的。
: 注意到我说80%用例就够了的数据结构的时候,我只说了两个:map{} and vector [].
: list其实很少用来作为模拟世界的数据,因为list是特殊的,是有“运行”的概念的,
: 有很多的麻烦,经常需要quote起来,不适合用来作数据,所以Clojure严格区分list和
: vector。
: 数据驱动的DSL,比如hiccup,主要由vector和map构成。还有一种更像程序的DSL, 这
: 些里面会有一些list来定义可执行的东西,defxyz,defabc, 之类,也仅限于此。
: 不是FP的话,其实显式的数据结构用处不大。

1 (共1页)
进入Programming版参与讨论
相关主题
一直不习惯immutabilityGoLang, Scala, Swift, Rust 哪个能在2015有关键性的突破?
vert.x平台上的新东西很让人兴奋阿functional programming lang里面 如果我说以後会大面积火的,还是lisp (clojure)
大本,跟你说,你凹凸了王垠水平见长
又看了一下go有人用spacemacs吗
想学函数语言和高层次抽象的同学看过来跳spacemacs的坑了
clojure 做数据分析go真是好东西
clojure这种东西只能自己一个人单干大家最近学啥呢
未来15年,服务器端语言,除了标准的java,我看好scala,go 前端乱弹,二爷的想法
相关话题的讨论汇总
话题: clojure话题: lisp话题: 上有话题: golang话题: json