私はGHCiの中:t 4
を入力すると、私はghciはなぜ(Ord a)=> aではない:t 4に対して(Num a)=> aを出力するのですか?
Prelude> :t 4
4 :: Num t => t
を取得4
がintまたは整数だけではない、それはボトムアップinferedされているが、4
がOrd t => t
かのように示されていない理由を私は理解していないことを、なぜ私は理解してこのような、より正確なもの:
4 :: (Ord t || Num t) => t
4
はOrd
とNum
が、Ord
とNum
接続されていないの両方であるので...
なぜ:t 4
出力はNum
になるのですか?
これは[haskell report](https://www.haskell.org/onlinereport/haskell2010/haskellch6.html#x13-1360006.4.1)に記載されています – Lee
「4」に「Ord t = > tである。今、私は 'Bool'が' Ord'のインスタンスであることに注目します。したがって、 '4 :: Bool'。 '4 :: Bool'を' True'または 'False'にする必要があります。なぜですか? –
@Lee Btw、タイプのデフォルトルールに関する似たような質問があります:https://stackoverflow.com/questions/39251728/ghci-randomio-type-inference私はそれに答えることを試み、レポートを理解しましたが、まだ明確な見解はありません。たぶん経験豊富な_Haskell_ユーザーが助けることができるでしょう:) – Shersh