5
나는 다음과 같은 데이터 구조를 포함하는 할당 코드와 함께 일해야 : 그러나하스켈이 데이터 구조를 사용하는 방법
data Rose a = a :> [Rose a]
, 내가 어떻게 데이터 구조, 예를 들어 작동하는 아무 생각을 : 어떻게 그것의 인스턴스를 만들 수 있습니까? 어떻게 루프를 통과 할 수 있습니까?
누구든지 나를 도와 줄 수 있다면.
나는 다음과 같은 데이터 구조를 포함하는 할당 코드와 함께 일해야 : 그러나하스켈이 데이터 구조를 사용하는 방법
data Rose a = a :> [Rose a]
, 내가 어떻게 데이터 구조, 예를 들어 작동하는 아무 생각을 : 어떻게 그것의 인스턴스를 만들 수 있습니까? 어떻게 루프를 통과 할 수 있습니까?
누구든지 나를 도와 줄 수 있다면.
이 데이터 형식의 생성자는 (:>)
이고 형식은 (:>) :: a -> [Rose a] -> Rose a
입니다. 당신은 당신이 좋겠, 당신은 그것을 위해 Functor
인스턴스를 원한다면 그것은 즉, 다른 이름으로
data Tree a = Node a [Tree a]
, Tree <=> Rose
및 Node <=> :>
기능적으로 동일
> 1 :> [] :: Rose [Int]
1 :> []
> 1 :> [2 :> [], 3 :> [1 :> []]] :: Rose [Int]
1 :> [2 :> [], 3 :> [1 :> []]]
처럼 그것으로 값을 구성 할 수 있습니다 do
instance Functor (Rose a) where
-- fmap :: (a -> b) -> Rose a -> Rose b
fmap f (a :> rest) = (f a) :> (map (fmap f) rest)
고맙습니다. y는 완벽하게 질문합니다. – Skyfe
또는 DeriveFunctor 확장자가 활성화 된'Functor'를 생성했습니다. – jozefg
'(:>)'이 데이터 유형은 무엇입니까? 이것에 대한 몇 가지 링크를 지적 해 주시겠습니까? (나는 이것을 처음으로 보았습니다.) – Sibi