PartialTypeSignatures
型シグネチャ内にワイルドカード(_)を書けるGHC拡張 PartialTypeSignaturesは型シグネチャ部分にワイルドカードを使える
型はそもそも全く書かなくても(多くの場合)型推論されるので常にエラーが生じるわけではない
型シグネチャを全く書かないことと、PartialTypeSignaturesを使うことの違いは?
code:hs
-- これと
f x = x + 1
-- これの違い
f :: Integer -> _
f x = x + 1
型シグネチャを書かない場合は、型全てを推論させることになる
上記の例の場合、f :: Num a => a -> aと推論される
一方で、PartialTypeSignaturesは、部分的にプログラマが指定し、残りは推論させる
上記の例の場合、f :: Integer -> Integerと推論される
プログラマが指定する範囲を自由に決められることを意味する
これ読めばわかるmrsekut.icon
3種類ある
型のワイルドカード
型制約のワイルドカード
型のワイルドカードの例
code:hs
not' :: Bool -> _
not' x = not x
Bool -> Boolと推論される
型制約のワイルドカードの例
code:hs
handleFetchAction :: _ => Text -> _
handleFetchAction url = do
documentBody <- do
response <- Wreq.get (cs url)
pure (response ^. Wreq.responseBody)
renderPlain (cs documentBody)
PartialTypeSignaturesが有効な場合は警告を表示するが、その警告を消す