среда, 30 марта 2011 г.

Портировал одну свою работу на хаскель

Портировал свою библиотеку имитационного моделирования Айвика с F# на хаскель. Зарелизил самую первую версию 0.1 на Hackage DB вместе с 51-страничным описанием в формате PDF.

Умеет этот порт многое. По сравнению с версией для F# дизайн стал чище, а реализация тем более. Вначале даже пытался бороться с чистотой через unsafePerformIO, копируя один в один подход из F#, за что получил от оптимизирующего компилятора. В итоге понял, что чистота — это благо. Научился ее использовать.

В общем, получил море позитива. Доволен результатом.

пятница, 4 марта 2011 г.

Маниловщина


Иногда очень хочется, чтобы F# был отделен от .NET. Чтобы программы на нем работали под юниксами и виндой без использования тяжелой виртуальной машины. Или, как минимум, все его новшества были портированы в окамл. Уж больно F# хорош!


Однако реализация F# иногда хромает. Например, в нем есть такие костыли как OptimizedClosures.FSharpFunc и FSharpFunc.InvokeFast. На деле это означает, что при вызове функции со многими аргументами задействуется RTTI, чтобы узнать, а есть ли прямой вызов функции, минуя каррирование. Во многом потому, что это снизу .NET. Подозреваю, что в окамле такой вызов функции сильно оптимизирован, и он не использует RTTI.