4
다음 하스켈 코드에서 어떻게 더 간결하게 작성할 수 있습니까? 네 가지 조건을 모두 열거해야합니까? 아니면 더 컴팩트 한 패턴으로 요약 할 수 있습니까? 예를 들어, Haskell이 float과 int를 어떻게 추가 하는지를 이미 알고있는 방법을 사용할 수 있습니까? 에서까지 수동으로 지정하지 않아도됩니까?Haskell의 패턴 일치 데이터 유형. 지름길?
data Signal = SignalInt Int | SignalFloat Float | Empty deriving (Show)
sigAdd :: Signal -> Signal -> Signal
sigAdd (SignalInt a) (SignalInt b) = SignalInt (a + b)
sigAdd (SignalInt a) (SignalFloat b) = SignalFloat ((fromIntegral a) + b)
sigAdd (SignalFloat a) (SignalInt b) = SignalFloat (a + (fromIntegral b))
sigAdd (SignalFloat a) (SignalFloat b) = SignalFloat (a + b)
main :: IO()
main = do
putStrLn (show (sigAdd (SignalFloat 2) (SignalInt 5)))
> sigAdd SA SB = SignalFloat (toFloatSig A + toFloatSig 나) 이 될해야 "... (toFloatSig SA + toFloatSig SB)"? 감사. – Steve
네가 맞아. 고마워. – Thomas
나는 Signal Num을 만들기 위해 확실히 노력할 것입니다. –