generated at
refined
篩型をやるpackage



refine
実行時に正しいか検証
refineTH
Template Haskellを使ってコンパイル時に検証


Refined <述語> <実際の型>
例.hs
type LowerCaseString = Refined LowerCase String
述語となる型をinstanceにする
以下は LowerCase という新しい述語を定義している
文字列が全て小文字であるかを判断する述語
例.hs
data LowerCase instance Predicate LowerCase String where validate _ value = if all isLower value then Nothing else Just "Not all chars are lower-case"



参考
実装の背景と、簡単な使い方