Entry tags:
id да не id
Приведите пример таких объявлений типа данных с конструктором данных T и сигнатуры функции f, что реализация
f (T x) = T xпроходила бы проверку типов, a
f x = xнет.
f (T x) = T xпроходила бы проверку типов, a
f x = xнет.
no subject
data T = T (IO ())
instance Eq T where { _ == _ = True }
f = id
Теперь:
id $ putStrLn "abc" == putStrLn "abc" -- не компилируется
id $ T (putStrLn "abc") == T (putStrLn "abc") -- компилируется
no subject
f x = x
какf x == x
и задача кардинально изменила свой смысл. Поэтому и написалinstance Eq
no subject
data T = T Int Int
. Или имеется в виду что-то другое?no subject
data T = T
.no subject
no subject
(полагаю, вы имели в виду "аргумент", а не "конструктор").
no subject
no subject
no subject
no subject
no subject
no subject
no subject
map f (x:xs) = f x: map f xs
map f xs = xs -- нельзя, т.к. xs не того типа
А в чистом виде - функтор Const.
data Const a b = Const a
type T = Const A
no subject
no subject
Да, Either подойдет, но не пройдет проверку один из кейсов, и искомый вид имеет не вся функция, а лишь один кейс.