Re[2]: ФЯ и полиморфизм
От: Аноним  
Дата: 17.09.06 18:28
Оценка:
Здравствуйте, Quintanar, Вы писали:


Q>У тебя задачи, собственно, нет, поэтому сложно догадаться, что именно тебя интересует.


Окей, перефразирую вопрос — что в функциональных языках является аналогом связки "полиморфизм+фабрика" ? В повседневной работе она встречается сплошь и рядом, на месте приведенного мной примера кода работы с базой могло быть все что угодно: например, так мы могли загружать сериализованные объекты, считывать команлы сетевого протокола и т.д. и т.п.

>> как подобная задача решается с помощью функциональных языков??


Q>Ну, например, так.

Q>
Q>let get_connect name =
Q>  if name = "mysql" then mysql_connect else oracle_connect

Q>let main arg =
Q>  let connect = get_connect arg in
Q>  bla-bla-bla
Q>


Стоп, я наверное неправильно понял, но допустим, что у нас есть не только функция connect(), но и куча других функций, необходимых для работы с базой:
сlose(), commit() и т.д. Неужели мне для каждой из этих функций придется делать проверку параметра name? т.е. писать:

let get_close name =
if name = "mysql" then mysql_close else oracle_close

let get_commit name =
if name = "mysql" then mysql_commit else oracle_commit


Но ведь с тем же успехом я мог бы писать и на чистом C, проверяя в каждой функции параметр или глобальную переменную name!
Разве это не шаг назад по сравнению с приведенным мной полиморфным кодом??
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.