История изменений
Исправление 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 можно посмотреть как оно работает)