`
simohayha
  • 浏览: 1403319 次
  • 性别: Icon_minigender_1
  • 来自: 火星
社区版块
存档分类
最新评论

Programming In Haskell 读书笔记1

    博客分类:
  • FP
阅读更多
书里面用的是huge我用的是GHC

1 首先到 http://haskell.org/ghc/  这边去下载个haskell的 编译器。
  如果不习惯emacs的话可以到这里    去下个  eclipse的插件,不过要注意这个插件只支持jdk5.0.

2 haskell 中有+ - * / ^ 和 `div` (这个是只取整数部分,比如 5 'div'3 输出 1   其他的符号就不用解释了。
  这边要注意一些算符优先级, 比如2*3^4 相当于 2*(3^4) ,而2^3^4相当于 2^(3^4)。

3 haskell中还有很多操作list的操作。
 (1) 选择一个非空lists中的第一个元素
     head [1,2,3,4,5] => 1
 (2)从一个非空list移除第一个元素
     tail [1,2,3,4,5] =>[2,3,4,5]
 (3) 选择list的第N个元素
     [1,2,3,4,5] !!2 => 3
 (4) 选择list中的前N个元素
     take 3[1,2,3,4,5] =>[1,2,3]
 (5) 删除list中前N个元素
     drop 3[1,2,3,4,5] =>[4,5]
 (6)计算一个list的长度
   length [1,2,3,4,5] =>5
 (7)计算一个list的和 
     sum [1,2,3,4,5]=>15
 (8)计算一个list的积
     product[1,2,3,4,5] =>120
 (9)合并两个list
    [1,2,3]++[4,5] =>[1,2,3,4,5]
 (10)反转一个list
   reverse[1,2,3,4,5] =>[5,4,3,2,1]


4 数学中的表达式和haskell的关系
比如数学中 的一个表达式  f(a,b) +cd 表示一个函数f(a,b)的值加上cd的积的值。而在haskell中我们是这样写的  f a b +c*d
下面这张表是数学中的表达式表示和haskell中的区别.
Mathematics     Haskell
f(x)             f x
f(x,y)           f x y
f(g(x))          f (g x)
f(x,g(y))        f x (g y)
f(x)g(y)         f x *g y


5  然后就可以写第一个haskell程序了。
(1)首先在 任意一个目录下 比如 d:/ 建立一个 文件first.hs.  编辑这个文件 然后键入
double x=x+x
quadruple x=double(double x)

然后启动GHCI ,然后键入 :CD D:/ 这样就进入了 D盘根目录下,然后 再键入 :load first 如果load成功它会显示 OK,modules  loaded:Main.

然后你输入 double 5 它会显示 10 输入quadruple 10 它会显示 40。
(2)我们再在d:/下建一个文件second.hs 编辑键入
factorial n = product [1..n]
average ns = sum ns `div` length ns

然后 :load second ,load成功后,在GHCI中键入
factorial 10它会 输出 36288000
键入 average [1,2,3,4,5] 他会输出 3

想要了解GHC更多的命令的话,可以去查他的DOC或者直接在GHCI中键入

6 要注意haskell中它的函数名必须得以一个小写字母开头,不然就会报错,下面是 haskell中关键字
引用

case  class data  default  deriving  do  else
if  import in infix infixl infixr   instance
let  module  new  type  of  then  type  where


这边解释一下where 关键字 ,给个例子大家就明白了
a= b+c
      where 
         {b=1; 
	   c=2}
d=a*2

load之后,在GHCi中键入a 就会输出3,键入d就会输出6,呵呵,大家这下明白了吧.

7 在haskell中注释分两种,单行注释是 --,多行的话 {- 与-}

呵呵,欢迎大家来拍砖.
  • 大小: 832.8 KB
分享到:
评论
2 楼 metaphy 2007-05-24  
挺有趣的
支持一个
前几天也在看这个语言
不过资料太少了
1 楼 Erlang 2007-04-12  
没啥意思

相关推荐

Global site tag (gtag.js) - Google Analytics