Haskell: 要点小记

2018-08-11  本文已影响0人  庞贝船长

0, 改变提示符 Prelude

:~$ ghci
----
Prelude> :set prompt "ghci> "
ghci> 

1, /= 表示 不等于(而不是自除!)(它看上去很像数学中的。)

ghci> 4 == 4
True
ghci> 4 /= 4
False

2, if-then-else: else 是强制要求的,有 if 必然有 else.

3, 在 ghci 输入 = 错误:

ghci> a=3

<interactive>:61:2: parse error on input ‘=’

改为:

ghci> let a = 3
ghci> a
3

详见: StackOverflow: Haskell error parse error on input `='

4, 在 Haskell 中, True, False 不定义为 1, 0 !! 非 0 值也不为 True!!

ghci> True && 1

<interactive>:6:9:
    No instance for (Num Bool) arising from the literal ‘1’
    In the second argument of ‘(&&)’, namely ‘1’
    In the expression: True && 1
    In an equation for ‘it’: it = True && 1

5, 否定: not 类C的语言中通常用!表示逻辑非的操作,而Haskell中用函数not

ghci> not True
False

6, 运算符优先级:Haskell给每个操作符一个数值型的优先级值,从1表示最低优先级,到9表示最高优先级。

ghci> :info (+)
class Num a where
  (+) :: a -> a -> a
  ...
    -- Defined in ‘GHC.Num’
infixl 6 +
ghci> :info (*)
class Num a where
  ...
  (*) :: a -> a -> a
  ...
    -- Defined in ‘GHC.Num’
infixl 7 *

7, pi

ghci> pi
3.141592653589793

8, 幂数 ^: 用于整数幂; ** 用于浮点数幂

ghci> 2^3
8
ghci> 2**3.0
8.0

9, 左右全闭区间

ghci> [1..10]
[1,2,3,4,5,6,7,8,9,10]

10,"" 表示空字符串,它与 []同义

ghci> "" == []
True

11, 在 Haskell里,所有类型名字都以大写字母开头,而所有变量名字都以小写字母开头。

12, :set +t 打印出类型, :unset +t 取消打印出类型

ghci> :set +t
ghci> 'c'
'c'
it :: Char

ghci> :unset +t

13, [Char] 是 string 的别名

ghci> "foo"
"foo"
it :: [Char]

14, % 构建分数

-- :m 加载模块 Data.Ratio
ghci> :m +Data.Ratio  
ghci> 10 % 20
1 % 2
it :: Integral a => Ratio a

15, :type

ghci> 3 + 2
5
ghci> :type it
it :: Num a => a
上一篇下一篇

猜你喜欢

热点阅读