이것은 스택 유형을 정의하는 방법입니다. 더 나은 방법이있을 수 있지만 지금은이 방법을 고집합니다.haskell에서이 스택 유형에 대한 functor 정의
data Stack' v = Stack' [v] Int deriving (Show)
그래서 푸시 같은 '는이
push' :: (Ord v) => Stack' v -> v -> Stack' v
push' (Stack' l m) a = if m <= length l then Stack' l m else Stack' (l ++ [a]) m
모양을하지만 이것을 위해 펑터를 정의 할 수 없습니다입니다. 이 시도는 "패턴의 구문 분석 오류 : v"라고 말하지 않습니다.
instance Functor Stack' where
fmap f (v l) = (map f v) (l)
누군가가 저에게 functor를 정의하는 데 도움을 줄 수 있습니까?
한 가지 방법을'++ '와'여기 length' 최대 대신 남은 용량을 역순으로 목록을 유지하고 저장하는 것입니다 . – hammar