표기를하고 모나드에 반환한다고 가정 나는 코드 Just [3,5]
하스켈 :
어떻게 하스켈 그 출력 값이 Maybe
모나드에 있어야 알고 있지 출력
do {x <- (Just 3); y <- (Just 5); return (x:y:[])}
다음습니까? 즉, return
은 [[3, 5]]
을 출력 할 수 있습니다.
Just 3 >>= \x -> Just 5 >>= \y -> return $ x:y:[]
에
표기를하고 모나드에 반환한다고 가정 나는 코드 Just [3,5]
하스켈 :
어떻게 하스켈 그 출력 값이 Maybe
모나드에 있어야 알고 있지 출력
do {x <- (Just 3); y <- (Just 5); return (x:y:[])}
다음습니까? 즉, return
은 [[3, 5]]
을 출력 할 수 있습니다.
Just 3 >>= \x -> Just 5 >>= \y -> return $ x:y:[]
에
do {x <- (Just 3); y <- (Just 5); return (x:y:[])}
desugars >>=
의 유형 Monad m => m a -> (a -> m b) -> m b
이며, 인수 Just 3
(또는 Just 5
) 우리가 m ~ Maybe
이 당 식의 반환 형식은 일부 Maybe
유형이어야하기 때문에.
category theory에서 natural transformations라는 것을 사용하여이 반환 [[3, 5]]
만들 수있는 가능성이있다. 즉 Maybe a
에서 [a]
을 자연스럽게 변형,
alpha :: Maybe a -> [a]
alpha Nothing = []
alpha (Just a) = [a]
이 존재하기 때문에 우리가 원하는 기능은 단순히 결과에 적용되는 자연의 변화라고이이 자연적인 변화이기 때문에 당신이
alpha (Just 3 >>= \x -> Just 5 >>= \y -> return $ x:y:[])
-- returns [[3, 5]]
@duplode (을)를 지적
alpha (Just 3) >>= \x -> alpha (Just 5) >>= \y -> return $ x:y:[]
-- returns [[3, 5]]
: 또한 첫 alpha
와 두 번째 함수를 적용 할 수 있습니다 패키지 Data.Maybe
의 alpha
은 maybeToList
입니다.
이'alpha '는'Data.Maybe'에서'maybeToList'로 사용할 수 있습니다. – duplode