Evening, Vlad. Vlad Harchev <[EMAIL PROTECTED]> 15:10 13/1/2003 wrote:
VH> В данном конкретном примере strstr использовать вообще не удасться, так как VH> она не принимает и не возвращает об[ект класса string (да и вообще у strstr VH> 2 параметра!). Мда, торопился писать и выбрал совершенно неправильный пример. Приношу свои извинения. VH> Но любую ф-ию с прототипом VH> string (*)(const string& ) VH> или VH> string (*)( string& ) VH> или VH> string (*)(string ) VH> можно передать без всяких врапперов. Именно об этом я и хотел спросить, спасибо. Правда, я не увидел этого в приведеном коде, но да, это действительно сделать несложно. VH> Она не обязана быть об[ектом - она может быть обычным указателем на С ф-ию. >> показать, как можно создать и вернуть сущность типа "функция". В твоем же >> примере возвращается нечто, ни разу не являющееся функцией. А syntactic >> sugar в виде перегруженного оператора "()" не делает, как не старайся, >> результат нормальной функцией. VH> С точки зрения семантики - результат ничем не отличается от нормальной ф-ии. VH> Ну разве что размер об[екта побольше чем размер указателя (но стандарт тоже VH> вроде ничего о размере указателя на ф-тю не говорит). Ну и что с NULL VH> ее не сравнишь (хотя нет, можно перегрузить оператор сравнения с (void*)). Вот если бы еще это было возведено в ранг принципа и внесено в стандарт языка .... [skip вопросы, по которым мы сошлись во мнениях - что STL - уже стандарт, и это облегчает дело, и то, что иногда С++ и варианто нет] >> >> >> data Condition = Equals String String >> >> | NotEqual String String >> >> | StartsWith String String >> >> | Larger String String >> >> VH> Можно вопрос - а какая семантика у Condition? - отношение? >> В данной конкретной моей программе? Семантика простая: программа - >> компилятор/интерпретатор некоего языка XYZ, в котором отношения бывают >> четырех >> типов, указаных выше. Язык XYZ в качестве операндов отношений допускает >> только литералы. Тип Condition является представлением понятие "отношение". >> Семантика поведения понятия "отношение" тут никак не описана. >> >> VH> А что, поддержка отношений имеется на уровне языков? >> Не понял вопроса :( VH> Я спрашивал - какой синтаксический смысл для интерпретатора языка на которм VH> написан этот интерпретатор - являются лексемы "Equals", "StartsWith" и т.д. - VH> стоковые константы, ссылки на ф-ии или что? Для Haskell-а лексемы Equals, StartsWith - это имена т.н. "конструкторов типа Condition". Т.е. данные типа Condition могут быть созданы при помощи применения конструкторов Equals, NotEqual, StartsWith к двум строкам. В общем случае, конструктор - это просто тэг, Equals String String - это то же самое, что tuple из двух строк с тэгом 'Equals'. Тэг позволяет отличать этот tuple от всех прочих tuple-ов. VH> Еще хотел спросить - в каком из функциональных языков (lisp, haskel, ocaml, VH> erlang, clean) возможно и с какими расходами можно реализовывать сложные VH> структуры данных типа графов (множества вершин с множеством ребер соединяющих VH> пары вершин)? Например: http://cs.oregonstate.edu/~erwig/fgl/haskell/ -- Dmitry Astapov //ADEpt E-mail: [EMAIL PROTECTED] GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D