Crowd a = Crowd {first :: a, second :: a, third :: a} deriving Functor
type Man = forall a. Crowd a -> a
хочу написать такую функцию, но не знаю как
forget :: Bounded a => Man -> Crowd a -> [Crowd a]
forget = undefined
-- forget first (Crowd _ s t) = [(Crowd f s t) | f <- [minBound..maxBound]]
в комментарии к forget пример, как она должна работать. Но я не могу заматчить first.
Если type Man выбран неудачно, то какой тут нужен на самом деле?
упрощу пример! как написать функцию new? data Crowd a = Crowd {first :: a, second :: a, third :: a} deriving Show newFirst :: a -> Crowd a -> Crowd a newFirst a c = c {first = a} newSecond :: a -> Crowd a -> Crowd a newSecond a c = c {second = a} -- newFirst = new first, newSecond = new second new :: (Crowd a -> a) -> a -> Crowd a -> Crowd a new = ???
Хм... Попробовал раскомментировать. Получил * Could not deduce (Enum a)
Обсуждают сегодня