Сразу скажу, что про ФЯ не знаю практически ничего, но есть большое желание разобраться. Открыл вот недавно документацию по Erlang — и сразу запнулся... Да, на первый взгляд, все там и хорошо, и красиво, но как только пробую "примерить" Erlang к чему-то "жизненному", сразу понимаю, что чего-то я тут не понимаю.
Впрочем, перейду к делу. Вот простейшая задача, которая элементрано решается на C++ (как впрочем, и любом другом ООП языке):
Есть приложение, которое работает с базой данных. Хочется, чтобы в зависимости от аргументов командной строки, оно конектилось либо к.. ммм.. ну пусть будет mysql, либо к oracle.
В "обычном" языке я б сделал нечто подобное:
class Driver
{
public:
virtual void connect() = 0;
};
class MysqlDriver : public Driver {}; //implements connect() using some mysql API calls.
class OracleDriver : public Driver {}; //implements connect() using some oracle API calls.
И, наконец,
class DriverFactory
{
public:
static Driver * createDriver( string name ) //creates necessary driver
{
Driver * driver = 0;
if("mysql" == name ) driver = new MysqlDriver();
else if( "oracle" == name ) driver = OracleDriver();
else throw 1;
return driver;
}
};
Внимание, вопрос: как подобная задача решается с помощью функциональных языков??