generated at
PartialTypeSignatures
型シグネチャ版のType-Holes
型シグネチャ内にワイルドカード( _ )を書けるGHC拡張


通常のType-Holesは、式部分にワイルドカードを使うが、
PartialTypeSignaturesは型シグネチャ部分にワイルドカードを使える
Type-Holesを使うと、プログラムが不完全になるので実行エラーが生じるが、
型はそもそも全く書かなくても(多くの場合)型推論されるので常にエラーが生じるわけではない
型シグネチャを全く書かないことと、PartialTypeSignaturesを使うことの違いは?
hs
-- これと f x = x + 1 -- これの違い f :: Integer -> _ f x = x + 1
型シグネチャを書かない場合は、型全てを推論させることになる
上記の例の場合、 f :: Num a => a -> a と推論される
一方で、PartialTypeSignaturesは、部分的にプログラマが指定し、残りは推論させる
上記の例の場合、 f :: Integer -> Integer と推論される
プログラマが指定する範囲を自由に決められることを意味する


これ読めばわかるmrsekut


3種類ある
型のワイルドカード
型制約のワイルドカード



型のワイルドカードの例
hs
not' :: Bool -> _ not' x = not x
Bool -> Bool と推論される


型制約のワイルドカードの例
hs
handleFetchAction :: _ => Text -> _ handleFetchAction url = do documentBody <- do response <- Wreq.get (cs url) pure (response ^. Wreq.responseBody) renderPlain (cs documentBody)



PartialTypeSignaturesが有効な場合は警告を表示するが、その警告を消す