haskell(2)

来源:互联网 发布:考浙江大学研究生知乎 编辑:程序博客网 时间:2024/05/21 07:48

本博客所有内容是原创,未经书面许可,严禁任何形式的转载。

http://blog.csdn.net/u010255642


Prelude> min 9 10
9
Prelude> max 82.3 0.12
82.3

Prelude>

Prelude> min (3*2) 12
6
Prelude> max (3*2) 12
12
Prelude>

我们可以通过``将前缀函数包围后转变成中缀函数,如:

Prelude> 9 `div` 2
4
Prelude> 10 `min` 12
10
Prelude> 10 `max` 12
12
Prelude>

haskell属于函数编程语言,不属于命令过程式语言,因为有很多语法特色需要习惯

比如:max 10 (min 15 20) ,括号中的min如果在C、c++中可能表示一个参数,但在这里min表示一个函数,先求15和20之前的最小数。 

Prelude> max 10 (min 15 20)
15
Prelude> max 10 (succ 12)
13
Prelude>

查看运算符的优先级可以使用info函数

Prelude> :info (+)
class Num a where
  (+) :: a -> a -> a
  ...
        -- Defined in `GHC.Num'
infixl 6 +
Prelude> :info (-)
class Num a where
  ...
  (-) :: a -> a -> a
  ...
        -- Defined in `GHC.Num'
infixl 6 -


我们可以在haskell中加载自己的程序,也可以在程序中定义函数,程序的扩展名为.hs

使用:l加载程序,使用:r重新加载。

我们编写一个简单的test.hs,内容如下 :

mydouble x=x*x
myadd x1 x2 =x1+x2

运行后:

Prelude> :l f:/pro/test.hs
[1 of 1] Compiling Main             ( F:\pro\test.hs, interpreted )
Ok, modules loaded: Main.
*Main> mydouble 6
36
*Main> myadd  6 8
14
*Main> 6 `myadd` 12
18
*Main>

我们修改一下test.hs,加入一个自定义的求3个参数的最小数的函数

mydouble x=x*x
myadd x1 x2 =x1+x2
mymin x1 x2 x3=min x1 (min x2 x3)

重新加载并运行

*Main> :r
[1 of 1] Compiling Main             ( F:\pro\test.hs, interpreted )
Ok, modules loaded: Main.

*Main> mymin 12 31 10
10
*Main>

原创粉丝点击