Haskell编程实战

在学习完Haskell学习笔记后,在使用Haskell编程时需要用到的技巧

调试

可以使用import Debug.Trace来调试,他可以加在表达式里面,有点像$的作用。

trace :: String -> a -> a
1
solve triangle len i = trace ("i is " ++ show i) zipWith max choice1 choice2

常用的模组

模组是类似于库,Prelude是自动import的模组。可以使用import导入其他模组,在GHCI中可以使用:m导入。这类似于Python中的from X import *
可以在括号中选择导入某些模组

import Data.List (sort)

使用hiding可以选择不导入某些函数

import Data.List hiding (nub)

或者使用qualified强制使用全部限定名,类似于Python中的import X

import qualified Data.Map

也可以为前面的限定名起个别名,类似于Python中的import X as Y

import qualified Data.Map as M

动态规划

比较方便的是动态规划每次迭代时传入dp数组,并且返回本次迭代后的dp数组

Rank-N types

在使用支持了Existential Quantification扩展的Haskell时,查看map的定义,可以看到forall关键字,它表示对于任意的,即∀。

map :: forall a b. (a -> b) -> [a] -> [b]