"http://learnyouahaskell.com"의 도움으로 하스켈을 배우고 있습니다. 나는이 접힌 나무를 나타내는 목록을 F.foldMap (\x -> [x]) testTree을 실행하면 data Tree a = Nil | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)
instance F.Foldable
하스켈을 처음 사용하기에 이것은 어리석은 질문 일 수 있습니다. 나는 :type sum가 sum :: (Num a) => [a] -> a를 보여 주라고되어있는 책을 읽고있다. 그 대신 메시지는 sum :: (Num a, Foldable t) => t a -> a입니다. https://www.haskell.org/hoogle/?hoogle=Sum에서 보았 듯
첫 번째 질문의 내부에 길이에서 하스켈에 멍청한 놈 발생에 대한 어떤 인스턴스는, 그래서 this 하스켈의 문제 번호 6 놀고 있었는데 : 나와 함께 친절하지 을 행사하시기 바랍니다 그리고 결국이 코드 combinations gr lis = filter clean $ sequence $ replicate gr lis
where
clean stri
하스켈에서 Foldable 클래스를보고 있습니다. 두 가지 방법 fold, foldMap에는 Monoid 인스턴스가 필요합니다. 그러나 foldr 또는 foldl에는 이러한 제약 조건이 없습니다. foldr/foldl 동등한 것으로, 그것은 주어진 폴딩 기능을 제한해서는 안 결과에 대해 fold :: Monoid m => t m -> m
foldMap :
나는 ScalaZ에 관한 기사를 읽고 그것에 대해 질문이 있습니다. 이 article에서는 sum 함수를 일반화하여 합계 형식을 추상화합니다. 특성 모노 이드가 [A]로 정의된다 def sum[T](xs: List[T])(implicit m: Monoid[T]) = //...
은 다음과 같습니다 trait Monoid[A] {
def mappe
나는 다음과 같은 데이터 구조에 대한 접이식 구현하고 : 나는 배와 foldMap을 구현 data Tree a = Leaf a | Node (Tree a) (Tree a) deriving Show
: instance Foldable Tree where
--fold :: Monoid a => Tree a -> a
fold (Leaf x) = x
f
우리는 fmap이 fmap :: Functor f => (a -> b) -> f a -> f b이고 sum이 sum :: (Num a, Foldable t) => t a -> a 인 것을 알고 있습니다. 그러나 아래의 코드는 나를 혼란스럽게합니다. > :t (fmap sum Just)
(fmap sum Just) :: Num b => b -> b
> f