id да не id
Apr. 7th, 2016 12:00 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Приведите пример таких объявлений типа данных с конструктором данных T и сигнатуры функции f, что реализация
f (T x) = T xпроходила бы проверку типов, a
f x = xнет.
no subject
Date: 2016-04-07 09:57 am (UTC)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)
From:no subject
Date: 2016-04-07 10:44 am (UTC)data T = T Int Int
. Или имеется в виду что-то другое?(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2016-04-07 11:07 am (UTC)(no subject)
From:no subject
Date: 2016-04-07 12:36 pm (UTC)no subject
Date: 2016-04-09 07:10 am (UTC)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)
From:(no subject)
From: