템플릿 하스켈을 배우려고합니다. 연습으로, 나는 isLeft
과 isRight
(영감을 받아 this question)과 같은 것을 생성 할 수있는 함수를 작성했습니다.
isA connam = do
ConE nam <- connam
nn <- newName "p"
lamE [varP nn] $ caseE (varE nn) [
match (conP nam [wildP]) (normalB [| True |]) [],
match wildP (normalB [| False |]) []
]
문제는 내가 대신 isA Left
더 직관적의 $(isA [| Left |])
를 작성해야한다는 것입니다 : 여기 내 겸손 시도합니다. 추한 구문을 없앨 수 있습니까? 설명서에서 대답을 찾을 수없는 것 같습니다.
이 함수는 인수가 하나 인 생성자에서만 작동하지만, 이는 another question입니다.
감사합니다. 나는 확실히 그것으로 살 수있다. 어딘가에서'$'는 스플 라이스에 더 이상 필요하지 않다는 것을 기억하지만, 어떤 컨텍스트 였는지 또는 여기에 적용 할 수 있는지 여부는 확실하지 않습니다. –
@ n.m. 나는 방금 전에 나의 대답에 그것을 추가했다 :) 나는 당신이 당신의 코멘트를 쓰는 동안 나의 원래 대답을 아직도보고 있었다고 생각한다. – hammar
아하, 그래서'isA 'Left'가 실제 함수 대신에 isALeft라는 함수의 선언을 생성하고자한다면 $를 생략 할 수 있습니까? –