當我問+操作的類型是你所期望的 Prelude> :t (+)
(+) :: Num a => a -> a -> a
當我操作分配給一個變量,那麼該類型的簽名更改 Prelude> let x = (+)
Prelude> :t x
x :: Integer -> Integer -> Integer
爲什麼會的類型操作員在分配時更改?
在下面的簡單的代碼,即從二叉查找樹中刪除的元素的函數的定義的一部分: deleteB x (Node n l r) | x == n = Node (leastB r) l (deleteB (leastB r) r)
確實編譯器優化代碼所以它調用(B以上R)只有一次,好像它是: deleteB x (Node n l r) | x == n = Node k l (deleteB k r)
我目前正在學習Haskell(我的問題太多了,最近都以此語句開頭),而且由於語法錯誤,我的編譯程序出現問題,主要是識別錯誤,理解/解決錯誤由GHC提供的消息。 例如,它只是花了我一段時間纔算出下面代碼中的錯誤。記住,這是從一個Haskell教程的內容採取: getNums = do
putStrLn "enter a number (0 to terminate)"
num <
我在GHCI定義的自定義冪exp'功能爲: let exp' x = sum $ take 100 [(x**k)/factorial k | k <- [0..]]
這產生以下類型的簽名: #> :t exp'
exp' :: (Enum a, Floating a) => a -> a
然而,我會它有望匹配exp功能,即 #> :t exp
exp :: Floating a =>
我開始用haskell編程。我正在開發的程序只是將總數與兩個元素相加,例如: [("book",10),("cookies",2),("icecream",5)]
這應該返回「17」。在這裏,我我的代碼: total [] = []
total ([("c",e)]:y) = total y ++ [e]
但是,儘管GHCI運行它給我這個錯誤: <interactive>:80:8: