Re: О типизации рефальских выражений


Subject: Re: О типизации рефальских выражений
From: Sergei M. Abramov (abram@botik.ru)
Date: Mon Aug 20 2001 - 13:44:45 MSD


>Что касается типизации, то ее действительно не хватает. Я начал писать
>интерпретатор рефала на haskell (пепрвая моя программа на этом языке), и
>был очень удивлен что отладка сводится переводу сообщений об ошибках
>компилятора :-).

Действительно, это общий опыт и общий отзыв всех (мне известных, и я сам тут
же), кто сталкивается с Haskell-ом: на этапе компиляции (и в основном за счет
хорошего механизма проверки типов) вылавливаются все или почти все ошибки:

            floor(99% * no_errors)

Есть второй общий отзыв (в первую очереь от меня, любящего Haskell): оставшиеся
ошибки

           ( no_errors - floor(99%*no_errors) )

вылавливать очень тяжело, а без недавно появившейся псевдо-функции

        trace :: String -> а -> а

практически не возможно.

По крайней мере, своим студентам я твержу:

    "Пишите на Haskell-е без ошибок -- это не сложно
    (спасибо компилятору с проверкой типизации).

    Зато если у Вас останется (после компилятора) хоть
    одна ошибка--отлаживаться на Haskell-е будет
    практически невозможно".

Это расплата за доведенною до ручки функциональность, отсуствие побочного
эффекта (не вставишь printf) и за ленивость (трудно предсказать, какие вызовы
функций работали, какие, нет--как следствие: не всегда понимаешь в каком месте
текста сыпанулось вычисление ---например, в одном случая у меня волосы встали
дыбом, когда я понял, _насколько_ мои наивные представления о порядке вычислений
отличались от реальности).

И с этой точки зрения старый-добрый Рефал Плюс -- хорош (как и жадный ML/SML и
прочие).

Удачи

Сергей



This archive was generated by hypermail 2b25 : Mon Oct 25 2004 - 21:24:59 MSD