どのような種類を使用している消化器・ファンクタに非常に近いように見えますか?あなたが簡単にdigestive-functors
でこれを行うことができ、ここに私の登録フォームの1の例です:
ここ
registrationForm =
Registration
<$> "username" .: text Nothing
<*> "password" .: passwordConfirmer
where passwordConfirmer =
validate fst' $ (,) <$> ("p1" .: text Nothing)
<*> ("p2" .: text Nothing)
fst' (p1, p2) | p1 == p2 = Success p1
| otherwise = Error "Passwords must match"
あなたは私のpasswordConfirmer
フォームフィールドを使用して、私は私の「パスワード」フィールドの値を生成見ることができます。このフィールドは2つのテキストフィールドを使用し、それらをタプルに入れますが、検証後にはfst
要素が使用されます(ただし、snd
となる可能性があります)。
マイRegistration
タイプがある:
data Registration = Registration
{ regUserName :: Text
, regPassword :: Text
}
私はyesods Applicativeのフォームを使用していますが、これはあまりにも良い答えです – Masse