monomorphism-restriction

    6熱度

    2回答

    當我進入GHCI命令:t我看到的多態類型: ghci> :t 42 42 :: Num t => t ghci> :t div div :: Integral a => a -> a -> a 但經過我實際評估這些功能我看到的類型默認規則的結果。根據Haskell報告和/或ghc實現應用類型違約規則後,有沒有一些命令或能力可以在ghci中觀察如何更改類型?

    8熱度

    1回答

    在翻譯工作時,它往往是方便的功能結合到一個名稱,例如: 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 =

    9熱度

    1回答

    我想在Haskell寫一個小遊戲,並且有相當數量的狀態需要傳遞。我想嘗試隱藏狀態monad 現在我遇到了一個問題:功能,採取國家和一個參數很容易寫入工作在狀態單子。但也有一些函數只是將狀態作爲參數(並返回一個修改的狀態,或者可能是其他的)。 在我的代碼的一部分,我有這樣一行: let player = getCurrentPlayer state 我想它不會採取狀態,而不是寫 player <

    26熱度

    3回答

    Haskell中的類型推理有一點學習曲線(至少可以說!)。開始學習它的一個好方法是用簡單的例子。所以,以下是類型推斷的「hello world」。 請看下面的例子: Prelude> :t 3 3 :: (Num t) => t Prelude> let x = 3 Prelude> :t x x :: Integer 的問題是這樣的:爲什麼3和X有不同的類型? 鏈路摘要: 閱讀下面的

    8熱度

    1回答

    我開始做99個哈斯克爾問題,我在problem 7,我的單位測試結果爆炸了。 顯然,這是由於這樣的:http://www.haskell.org/haskellwiki/Monomorphism_restriction 我只是想確保我正確地理解這一點,因爲我有點困惑。 情況1:func a被定義爲沒有類型def或非嚴格類型def,然後被使用一次,編譯器在編譯時沒有問題推斷類型。 情況2:相同FUN

    2熱度

    1回答

    我在Haskell寫了一個簡單的(情節較輕)素數生成器,具有相互遞歸定義,生成素數和確定數量的primeness: primes :: (Integral a) => [a] primes = 2 : filter isPrime [3, 5..] isPrime :: (Integral a) => a -> Bool isPrime m = all (indiv m) (takeWhi

    1熱度

    1回答

    ,我有以下數據類型: {-# LANGUAGE ExistentialQuantification #-} {-# LANGUAGE ExtendedDefaultRules #-} class ToString a where data M = forall a. (ToString a) => B a 在GHCI我可以做以下的,沒有任何問題: let bs = [B, B] 但是

    15熱度

    3回答

    我開始Haskell ...我嘗試以兩種不同的方式編寫以下平凡函數,讓Haskell決定類型,並且類型系統在每個函數中執行一些不同的操作案件。這種行爲的解釋是什麼? Prelude> let f x = 2 * x Prelude> let g = (2*) Prelude> :info f f :: Num a => a -> a -- Defined at <interactive>:1

    2熱度

    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 和檢查平方米的類型我看到我期待看