Re[2]: Хаскель :: вопрос
От: barn_czn  
Дата: 11.02.14 09:49
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, barn_czn, Вы писали:


_>>У меня вполне конкретный вопрос по Хаскелю, на который не могу пока найти ответа.

_>>См. код:

_>>f :: a->a

_>>-- имплементация не важна

_>>toString:: a->String

_>>toString (f x) = "Applied f"
_>>toString _ = "any"


_>>То что toString не компилится я уже понял почему, патерн матчинг не такой мощный как я ожидал, и этому есть объяснение. Но цель функции toString я думаю вы поймете.

_>>Я хочу, используя патерн-матчинг, покапаться в дереве выражения на входе.
_>>Как мне это сделать?


G>Для того чтобы копаться в дереве выражения надо его создать. Вызов функции != дерево выражения.


А разве я его не создаю строя цепочку вызовов? Где же все то что обещали в Хаскеле — ленивость вычислений, все есть функция.
Вот я и хочу воспользоватся ленивостью Хаскеля и покапатся в другой функции.
Я согласен изменить сигнатуру на
toString:: (a->a)->String

Но я точно не хочу внутри ФЯ строить еще одну объектную модель выражений и деревьев.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.