當我進入GHCI命令:t我看到的多態類型: ghci> :t 42
42 :: Num t => t
ghci> :t div
div :: Integral a => a -> a -> a
但經過我實際評估這些功能我看到的類型默認規則的結果。根據Haskell報告和/或ghc實現應用類型違約規則後,有沒有一些命令或能力可以在ghci中觀察如何更改類型?
在翻譯工作時,它往往是方便的功能結合到一個名稱,例如: ghci> let f = (+1)
ghci> f 1
2
這個別名的名稱f的功能(+1)。簡單。 但是,這並不總是奏效。我找到一個導致錯誤的例子,試圖從Data.List模塊中別名nub。例如, ghci> :m Data.List
ghci> nub [1,2,2,3,3,3]
[1,2,3]
ghci> let f =
我想在Haskell寫一個小遊戲,並且有相當數量的狀態需要傳遞。我想嘗試隱藏狀態monad 現在我遇到了一個問題:功能,採取國家和一個參數很容易寫入工作在狀態單子。但也有一些函數只是將狀態作爲參數(並返回一個修改的狀態,或者可能是其他的)。 在我的代碼的一部分,我有這樣一行: let player = getCurrentPlayer state
我想它不會採取狀態,而不是寫 player <
我在Haskell寫了一個簡單的(情節較輕)素數生成器,具有相互遞歸定義,生成素數和確定數量的primeness: primes :: (Integral a) => [a]
primes = 2 : filter isPrime [3, 5..]
isPrime :: (Integral a) => a -> Bool
isPrime m = all (indiv m) (takeWhi
,我有以下數據類型: {-# LANGUAGE ExistentialQuantification #-}
{-# LANGUAGE ExtendedDefaultRules #-}
class ToString a where
data M = forall a. (ToString a) => B a
在GHCI我可以做以下的,沒有任何問題: let bs = [B, B] 但是
我開始Haskell ...我嘗試以兩種不同的方式編寫以下平凡函數,讓Haskell決定類型,並且類型系統在每個函數中執行一些不同的操作案件。這種行爲的解釋是什麼? Prelude> let f x = 2 * x
Prelude> let g = (2*)
Prelude> :info f
f :: Num a => a -> a -- Defined at <interactive>:1
可能重複: What is going on with the types in this ghci session? 要嘗試和實踐了一下Haskell語言和了解自由,我與玩弄點一個函數來平方數 所以我開始定義 >let dup f x = f x x
,所以我可以改寫DUP方面平方米(不擔心做DUP點免費現在) >let sq x = dup (*) x
和檢查平方米的類型我看到我期待看