deriving

Jan 12, 2007 17:51

Неожиданно обнаружил, что при включенном -fglasgow-exts для newtype можно делать deriving любых классов, экземпляром которого уже является обернутый тип.

newtype Stream a = S [a]
deriving (Functor, Monad, Show)

А я дурак сижу пишу инстансы.

UPD: Читайте ещё извращений про deriving. На моём 6.4.2 не работают.
UPD 2: А вот и описание этой фичи

haskell, программирование, типы

Leave a comment

Comments 7

_adept_ January 12 2007, 14:48:33 UTC
Имхо, это только в ghc 6.6 появилось, раньше было нельзя генерить, надо было писать руками.

Reply

lomeo January 12 2007, 15:17:39 UTC
У меня на работе 6.4.2, всё никак не удосужился поставить 6.6. Дома, правда, стоит.
Так вот, работает.

Есть ещё интересные вещи, сейчас проапдейчу пост...

Reply


migmit January 12 2007, 14:50:02 UTC
Wow!
Хоть что-то.

Reply


palm_mute January 12 2007, 15:09:36 UTC
Действительно wow.

Reply


nealar January 13 2007, 22:07:13 UTC
Офигеть!

Reply


justbulat February 26 2007, 20:17:35 UTC
7-я глава user manual - это вообще обязательная к прочтению штука, хотя там и не всё с первого прочтения понятно. haskell98 - всё же очень ограниченный, непрактичный язык, так что без знания всех его современных расширений далеко не уедешь. при этом приличная часть этих расширений совпадает в ghc и hugs

когда выходил ghc 6.6 ghc hq по моим просьбам внесло множество изменений в его анонс http://haskell.org/ghc/docs/6.6/html/users_guide/release-6-6.html , где описаны изменения. так что этот анонс удобно использовать для переучивания с 6.4 на 6.6

standalone deriving доступен только в HEAD. кстати, в HCAR и на http://hackage.haskell.org/trac/ghc/wiki/Status/October06 кратко перечислены нововведения в 6.6 и 6.8

Reply

lomeo February 27 2007, 07:38:26 UTC
Ух ты, спасибо!

Reply


Leave a comment

Up