Здравствуйте, Sinclair, Вы писали:
_>>Ну для начала, если мы говорим о C++, то скажем все наши функции реализованные в виде шаблонов заработают сами автоматом. )))
S>Осталось придумать, как реализовать в виде шаблонов функции типа возведения в степень. Желательно так, чтобы они работали и для комплексных чисел тоже.
Уже есть в SGI STL:
<b>std::power</b>. Работает и для целых, и для вещественных, и для комплексных, и даже для матриц.
Power is generalized exponentiation: it raises the value x to the power n, where n is a non-negative integer.
_>>Ну а нешаблонные действительно надо оборачивать в Apply. Так же как и в Хаскеле (только там в bind). И кстати в Хаскеле это единственный вариант, в отличие от C++.
S>Как я понял, всё же в Хаскеле есть какие-то синтаксические улучшения для монад.
Минимальные. Без синтаксических улучшений:
foo a b = a >>= \x ->
b >>= \y ->
return x + y
с do-сахаром:
foo a b = do x <- a
y <- b
return x + y