![]() |
|
|
![]()
|
|
| Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: нет Всего: 7 |
Функция string_of_atomformula это какой-то трэш. -------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
| Void |
|
||||||||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 1 Всего: 173 |
Что ж, взглянем на эту функцию. Первое, что бросается в глаза, — это деструктивное, с присваиваниями, построение строки. Вообще, в OCaml это нормально, но в данном случае никакого выигрыша не даёт (для инкрементального построения строк надо использовать Buffer). Поэтому перепишем terms_to_string в чистом виде с использованием стандартной функции fold_left. Вообще, если из списка нам нужно сделать одно значение, это почти всегда указывает на применимость свёртки (fold).
К функции явно напрашивается обобщение: списки, разделённые запятыми, можно много из чего строить. Параметризуем её функцией перевода элемента списка в строку:
Стоит обратить внимание на получившийся тип:
Если вдруг эта функция станет узким местом, можно переписать с помощью Buffer:
Теперь terms_to_string можно записать очень просто:
Ну и наконец сама функция string_of_atomformula:
P.S. Темы всё-таки корректнее называть надо. Это сообщение отредактировал(а) Void - 22.9.2009, 23:10 -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||||||||
|
|||||||||||||
| Kakadu |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 273 Регистрация: 19.3.2008 Репутация: нет Всего: 7 |
Да. я наконец-то собрался и осмыслил это. спасибо
-------------------- Добрые мариносы долго кормили украдкой маленьких зерлингов. От этой украдки зерлинги пухли и дохли |
|||
|
||||
![]()
|
| Правила форума «Функциональные языки: общие вопросы» | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |