Re: kylix 2
Evening, Vlad.
Vlad Harchev <hvv@hippo.ru> 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: adept@umc.com.ua
GPG KeyID/fprint: F5D7639D/CA36 E6C4 815D 434D 0498 2B08 7867 4860 F5D7 639D
Reply to: