1. const函數(shù)
我們看看const函數(shù)的聲明:
ghci> :t const
const :: a -> b -> a
這個函數(shù)實際效果是給定兩個參數(shù)肉渴,它返回第一個參數(shù),也就是返回結(jié)果和第二個參數(shù)沒有一毛錢關(guān)系带射。
我們看看實際運行效果:
ghci> const 1 "nouse"
1
ghci> const 1 undefined
1
這個東西為啥有用同规,我們說得簡單一點:如果你要用到某個函數(shù)F,這個函數(shù)的原型要求你必須給他提供另外一個函數(shù)G作為參數(shù)窟社,而F的規(guī)約是G的參數(shù)必須由F提供券勺,但是G對F提供的參數(shù)實在沒有興趣,而處于規(guī)約要求灿里,你只能找個折中的方法关炼,即我接受F傳遞過來的參數(shù),但是我不使用匣吊。舉例如下:
x >> y = x >>= const y? (注意>>=會把左邊的Monad轉(zhuǎn)換為一個正常值后傳到給右邊的函數(shù)儒拂,即 (>>=) :: Monad m => m a -> (a -> m b) -> m b)
實際它和下面是同樣的效果,但是看上去更加簡潔
x>>y = x>>= \_-> y
2. id
ghci>? :t id
id :: a -> a
id把它的參數(shù)原樣返回色鸳。這有啥用? 同樣的道理社痛,有些函數(shù)調(diào)用的格式上要求你提供一個函數(shù),它在給你傳遞一個值讓你處理命雀,而你實際上不想做任何處理(只想原樣進來褥影,原樣出去)