lomeo: (лямбда)
Dmitry Antonyuk ([personal profile] lomeo) wrote2007-04-10 02:31 pm

Вывод типов всегда завершается, говорите?

Вот здесь у меня висит на выводе типа myFix:

newtype Fun a = Fun (Fun a -> a)
 
fun x@(Fun f) = f x
 
myFix = fun (Fun fun)


Запускал в GHCi 6.6

[identity profile] thesz.livejournal.com 2007-04-10 11:08 am (UTC)(link)
module A where

newtype Fun a = Fun (Fun a -> a)
 
fun x@(Fun f) = f x
 
myFix = fun (Fun fun)
Компилирую 'ghc -ddump-tc -c a.hs'. Тайпчекер выводит все правильно.

Может, это где-то еще?

[identity profile] palm-mute.livejournal.com 2007-04-10 03:09 pm (UTC)(link)
Аналогично, виснет.
Надо в кафе дядьке Саймону сообщить, однозначно баг.
А зачем такой myFix? Y-комбинатор не так определяется.

Известная бага, оказывается

[identity profile] palm-mute.livejournal.com 2007-04-11 10:26 am (UTC)(link)
В Хаскелл-кафе мой вопрос еще не появился (во всяком случае, я его там не вижу), но Neil Mitchell уже ответил:

It's a documented bug in GHC:

http://www.haskell.org/ghc/docs/latest/html/users_guide/bugs.html#bugs-ghc

"GHC's inliner can be persuaded into non-termination using the
standard way to encode recursion via a data type"

Thanks

Neil

[identity profile] thesz.livejournal.com 2007-04-12 04:28 pm (UTC)(link)
Начал читать комментарии.

Понял, что мозг навсегда испорчен Майкрософт Прожект.

Ушел горевать.