LINUX.ORG.RU

История изменений

Исправление gloomdemon, (текущая версия) :

могу внезапно начать изучать этот неведомый до этого дня для меня язык?

То же самое можно спросить и про любой другой язык. Когдя я искал нечто лучшее чем visual prolog 5.2 (потому что увидев 6ю версию понял что надо завязывать с visual prolog), то основными фишками для меня стали:

1. строгая типизация;

2. компиляция через компиляторы языков C/C#/Java (можно еще добавить Erlang) и соответствующая скорость (http://adventuresinmercury.blogspot.ru/search/label/Benchmarks Game) по сравнению с тем же swi prolog который тогда даже компилироваться нормально не умел;

3. как следствие, удобный foreign language interface:

:- func sin(float) = float. :- pragma foreign_proc(«C», sin(X::in) = (Sin::out), [may_call_mercury], «Sin = sin(X);»).

Если нужно заюзать что-нибудь, то обертка Mercury->C пишется довольно быстро.

4. Автоматическая параллелизация через оператор & (там же в тесте выше на adventures in mercury можно посмотреть как оно работает)

ЗЫ

Можно еще добавить небольшую фишку, в mercury можно имена предикатов и функций писать на utf-8 =)) т.е.:

:- pred 'женщина'(string::out) is multi.

'женщина'(«Елена»).

'женщина'(«Ира»).

и т.д.

Исправление gloomdemon, :

могу внезапно начать изучать этот неведомый до этого дня для меня язык?

То же самое можно спросить и про любой другой язык. Когдя я искал нечто лучшее чем visual prolog 5.2 (потому что увидев 6ю версию понял что надо завязывать с visual prolog), то основными фишками для меня стали:

1. строгая типизация; 2. компиляция через компиляторы языков C/C#/Java (можно еще добавить Erlang) и соответствующая скорость (http://adventuresinmercury.blogspot.ru/search/label/Benchmarks Game) по сравнению с тем же swi prolog который тогда даже компилироваться нормально не умел; 3. как следствие, удобный foreign language interface:

:- func sin(float) = float. :- pragma foreign_proc(«C», sin(X::in) = (Sin::out), [may_call_mercury], «Sin = sin(X);»).

Если нужно заюзать что-нибудь, то обертка Mercury->C пишется довольно быстро.

4. Автоматическая параллелизация через оператор & (там же в тесте выше на adventures in mercury можно посмотреть как оно работает)

ЗЫ

Можно еще добавить небольшую фишку, в mercury можно имена предикатов и функций писать на utf-8 =)) т.е.:

:- pred 'женщина'(string::out) is multi.

'женщина'(«Елена»).

'женщина'(«Ира»).

и т.д.

Исправление gloomdemon, :

могу внезапно начать изучать этот неведомый до этого дня для меня язык?

То же самое можно спросить и про любой другой язык. Когдя я искал нечто лучшее чем visual prolog 5.2 (потому что увидев 6ю версию понял что надо завязывать с visual prolog), то основными фишками для меня стали:

1. строгая типизация; 2. компиляция через компиляторы языков C/C#/Java (можно еще добавить Erlang) и соответствующая скорость (http://adventuresinmercury.blogspot.ru/search/label/Benchmarks Game) по сравнению с тем же swi prolog который тогда даже компилироваться нормально не умел; 3. как следствие, удобный foreign language interface:

:- func sin(float) = float. :- pragma foreign_proc(«C», sin(X::in) = (Sin::out), [may_call_mercury], «Sin = sin(X);»).

Если нужно заюзать что-нибудь, то обертка Mercury->C пишется довольно быстро.

4. Автоматическая параллелизация через оператор & (там же в тесте выше на adventures in mercury можно посмотреть как оно работает)

ЗЫ

Можно еще добавить небольшую фишку, в mercury можно имена предикатов и функций писать на utf-8 =)) т.е.:

:- pred 'женщина'(string::out) is multi.

'женщина'(«Елена»). 'женщина'(«Ира»).

и т.д.

Исходная версия gloomdemon, :

могу внезапно начать изучать этот неведомый до этого дня для меня язык?

То же самое можно спросить и про любой другой язык. Когдя я искал нечто лучшее чем visual prolog 5.2 (потому что увидев 6ю версию понял что надо завязывать с visual prolog), то основными фишками для меня стали:

1. строгая типизация; 2. компиляция через компиляторы языков C/C#/Java (можно еще добавить Erlang) и соответствующая скорость (http://adventuresinmercury.blogspot.ru/search/label/Benchmarks Game) по сравнению с тем же swi prolog который тогда даже компилироваться нормально не умел; 3. как следствие, удобный foreign language interface:

:- func sin(float) = float. :- pragma foreign_proc(«C», sin(X::in) = (Sin::out), [may_call_mercury], «Sin = sin(X);»).

Если нужно заюзать что-нибудь, то обертка Mercury->C пишется довольно быстро.

4. Автоматическая параллелизация через оператор & (там же в тесте выше на adventures in mercury можно посмотреть как оно работает)