1
shyling 2016-02-28 21:29:36 +08:00
我一直都有点疑问
func :: a -> [a] func x = yyy 这样写真的好看么...吹嘘的是类型系统,还要手动指明类型 |
2
levn 2016-02-28 21:35:53 +08:00 via Android
学到 Monad Transformer 之类的话。。还会这么想么 。。
|
3
jiyinyiyong 2016-02-28 21:44:24 +08:00
@shyling 不是为了好看了.
Haskell 研究的类型系统是希望能帮助程序员把类型自动推导出来, 一般的都能推导出来, 然而在使用类型类(...没记清楚, 没学好)的情况下无法推导需要手写. 结果真实的场景下很多人都自己写... 其实 Haskell 吹嘘的不是可推导, 而是代数类型系统验证通过以后可靠性更好. 据说以后的 Dependent Type 实现后还更严格. |
4
jiyinyiyong 2016-02-28 21:47:47 +08:00 1
表示自从被不可变数据洗脑我已经受不了 JavaScript 那种坑人的 mutable data structure.
然而类型系统太复杂, Haskell 的还没学完, PureScript 又来新的类型, 太难对付了 |
5
ChiangDi 2016-02-28 21:49:51 +08:00
你写个复杂的网站试试
|
6
shyling 2016-02-28 22:45:17 +08:00
@jiyinyiyong 可能我是偏向于实用派的吧,在我看来 Programming Language 只是表达的工具,更喜欢那些容易写(读)出,易于实现自己心里的模型的语言(也可能是我对 fp 了解还不够深,我觉得世界就是过程式的,有状态的|木有数学的脑细胞啊)
|
10
jiyinyiyong 2016-02-29 09:22:08 +08:00 1
@shyling 搞 Haskell 的人一般距离实用派有点远, 他们很多都是搞研究的, 比如前几天看的采访, 这位大姐专门研究类型系统, 主业就是 fork GHC 试验新理论, 还带着学生一起搞:
http://www.infoq.com/interviews/weirich-haskell-dependent-types 理论成果渐渐才能渗透到主流语言里被大量的程序员学习, 就像工地上盖楼的人不一定都要会计算建筑承重抗风 blabla 的数学的东西. Haskell 虽然认为过程式有问题不能直接搞, 但并不是把装的抛弃了的, 只是说用局部变量(只是像局部变量, 实际上用 Monad)把状态管理起来了. 比较绕, 但是理解的话还是会认为有道理的. 越到复杂问题越有感觉. |
11
shyling 2016-02-29 20:53:29 +08:00
@jiyinyiyong 今天突然想到了个问题:如何用 haskell 炒菜 0 0
|
12
jiyinyiyong 2016-02-29 22:54:37 +08:00
@shyling 我没 get 到这个 point...
|
13
shyling 2016-02-29 22:59:00 +08:00
@jiyinyiyong 意思是抽象出来炒菜的步骤(检查食材,出现错误的挽救办法 //例如盐放多了,炒菜的操作顺序)
|
14
jiyinyiyong 2016-03-01 09:40:55 +08:00
@shyling 好歹是图灵完全的语言, 这个事情是不怕的. 再不济你看用 Haskell 实现一门普通的脚本语言然后用这个脚本语言去写都可以的, 当然, 前提是 API 是现成的 :D
|
15
shyling 2016-03-01 12:02:56 +08:00
@jiyinyiyong 当然能实现啦,问题是怎么写好=。=
|
16
shyling 2016-03-01 12:03:18 +08:00
@jiyinyiyong 时间 /空间 /美观 综合考虑
|
17
bramblex 2016-03-01 12:29:29 +08:00
|
19
bramblex 2016-03-01 12:31:36 +08:00
|
20
bramblex 2016-03-01 12:36:10 +08:00 1
@jiyinyiyong
类似 State Monad 这种东西, Monad 的作用是防止副作用扩散。比如 State Monad 就有一个 Unsafe 的,用的就是变量来管理 State 来提高性能。 对于过不过程式,这个东西没什么好讨论的,就是 CPS 变换的问题。 Haskell 里面的 do 语法糖就是干这事的。 |
21
bramblex 2016-03-01 12:42:11 +08:00 1
|