搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
楼主: 轻舟过
收起左侧

在研究Haskell的函数式编程

[复制链接]

该用户从未签到

97

主题

75

好友

1万

积分

第一章

积分
11926
发表于 2012-8-1 13:55:07 | 显示全部楼层


给大神跪了,我们写教程贴是面向那些想入门的人,或者想学习这门语言的人~~
阁下技能树点了好几层了,就无视掉吧
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

35

好友

1万

积分

第一章

积分
12268
发表于 2012-8-1 14:05:03 | 显示全部楼层
轻舟过 发表于 2012-8-1 13:50
应该还是有一些实际项目的
Haskell还有Web框架Snap和Yesod

@6*好吧
其实我觉得纯函数写起来是好玩,但是有些时候并不是很方便
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-8-1 14:19:22 | 显示全部楼层
前原圭一 发表于 2012-8-1 14:05
好吧
其实我觉得纯函数写起来是好玩,但是有些时候并不是很方便

函数式的优点是没有状态,给函数同样的输入,它能保证给出同样的输出
其实现在很多编程语言都借鉴了函数式编程的特性,想脚本语句中的yield就是借鉴了函数式Lazy Evaluation的特性
不方便确实的,写惯了过程式的思路很难转换过来。另外很多地方都会用到尾递归,性能也成问题。
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

35

好友

1万

积分

第一章

积分
12268
发表于 2012-8-1 14:23:50 | 显示全部楼层
轻舟过 发表于 2012-8-1 14:19
函数式的优点是没有状态,给函数同样的输入,它能保证给出同样的输出
其实现在很多编程语言都借鉴了函数 ...

@18*嗯其实也就是觉得性能上有问题
如果流程中的每一个部分都要从最初的输入开始进行处理的话,应该会有很多重复操作

尾递归的话不知道haskell有没有做优化
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-8-1 14:48:22 | 显示全部楼层
前原圭一 发表于 2012-8-1 14:23
嗯其实也就是觉得性能上有问题
如果流程中的每一个部分都要从最初的输入开始进行处理的话,应该会有 ...

中间结果应该是可以保存的
尾递归不知道有没有优化,有些操作倒是可以用函数如map、filter之类的
map、filter什么的现在好多语言都有
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

28

主题

103

好友

9783

积分

技术宅认证程序员

苦逼,受剥削人民

积分
9783
发表于 2012-8-1 15:11:59 | 显示全部楼层
Richeir 发表于 2012-8-1 13:55
给大神跪了,我们写教程贴是面向那些想入门的人,或者想学习这门语言的人~~
阁下技能树点了好几层 ...

.....
Ruby和Python差不多啊
没必要重复学
既然学了Ruby就要会用
我记得RPGMaker的脚本就是用的Ruby
可以和游戏制作板块那边联动一下
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

97

主题

75

好友

1万

积分

第一章

积分
11926
发表于 2012-8-1 15:54:52 | 显示全部楼层
秋声赋 发表于 2012-8-1 15:11
.....
Ruby和Python差不多啊
没必要重复学


我们是介绍新手入门...
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

35

好友

1万

积分

第一章

积分
12268
发表于 2012-8-1 16:06:54 | 显示全部楼层
轻舟过 发表于 2012-8-1 14:48
中间结果应该是可以保存的
尾递归不知道有没有优化,有些操作倒是可以用函数如map、filter之类的
map、fi ...

@29*Lisp中倒是可以用let之类的来保存中间变量
haskell我没学太多,不知道有没有类似的东西
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

35

好友

1万

积分

第一章

积分
12268
发表于 2012-8-1 16:07:33 | 显示全部楼层
Richeir 发表于 2012-8-1 15:54
我们是介绍新手入门...

@3*对于会ruby的人来说,python实在是
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-8-1 16:10:37 | 显示全部楼层
前原圭一 发表于 2012-8-1 16:06
Lisp中倒是可以用let之类的来保存中间变量
haskell我没学太多,不知道有没有类似的东西 ...

haskell也有let的
我的程序里用到了where,也是差不多的东西
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

97

主题

75

好友

1万

积分

第一章

积分
11926
发表于 2012-8-1 16:16:46 | 显示全部楼层
前原圭一 发表于 2012-8-1 16:07
对于会ruby的人来说,python实在是


Python是啥,能吃么...我不知道唉...
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

35

好友

1万

积分

第一章

积分
12268
发表于 2012-8-1 16:36:17 | 显示全部楼层
轻舟过 发表于 2012-8-1 16:10
haskell也有let的
我的程序里用到了where,也是差不多的东西

=_,=不知道lisp和haskell根本上有什么区别
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

5

主题

35

好友

1万

积分

第一章

积分
12268
发表于 2012-8-1 16:38:01 | 显示全部楼层
Richeir 发表于 2012-8-1 16:16
Python是啥,能吃么...我不知道唉...

@14*可以吃
Ref: http://en.wikipedia.org/wiki/Pythonidae
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

该用户从未签到

258

主题

314

好友

3万

积分

第二章

积分
35715
 楼主| 发表于 2012-8-1 16:43:38 | 显示全部楼层
前原圭一 发表于 2012-8-1 16:36
=_,=不知道lisp和haskell根本上有什么区别

我也不清楚,好像lisp更强大
有人说:
Lisp 与 Haskell 并非同源, Haskell 来自 Miranda , 借鉴了 ML 中的类型推导。 Python的 list comperhension 是来自 haskell, 在 CL中有一个类似的 incf-cl 库可以实现 list comperhension 。 这就是Lisp的强大之处, 它根本就没语法,写出来的就是代码树, Macro就是一个代码生成器。 所以有什么新的语言特性,Lisp都能快速的吸收进来。
实际上, 后来很重要的 循环、OO、异常处理, 在Lisp中都是通过 macro 实现的。

因此,神马都是浮云, 不服Lisp的,可以自己写个 C++, Java 的预处理扩展, 自己实现各种特性, 只是Lisp将这种能力内置了,缩短了进化语言与普通开发之间的距离。人人都能变成语言的改进者。
博客什么的求人气 http://bimania.org
回复 支持 反对

使用道具 举报

该用户从未签到

97

主题

75

好友

1万

积分

第一章

积分
11926
发表于 2012-8-2 17:41:47 | 显示全部楼层


今晚要写帖子哦~
签名被小宅喵吞掉了~~~~(>_<)~~~~
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-5-4 05:11 , Processed in 0.082113 second(s), 14 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表