от модератора
От: Кодт Россия  
Дата: 07.06.07 07:31
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>ты бы прежде чем высасывать чушь из пальца, поинтересовался хоть ограничениями type inference в немерле


Предлагаю, и очень настоятельно, прекратить вещание в таком тоне.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[21]: ФП и абстракция списка
От: Кодт Россия  
Дата: 07.06.07 07:38
Оценка:
Здравствуйте, geniepro, Вы писали:

G>Предлагаю перейти с Хаскелла на Лискелл!

G>Семантика хаскелловская, синтаксис... Синтаксис вторичен! :о))

Не выйдет.
В Хаскелле и Лиспе разное строение синтаксических деревьев, что оказывает влияние на семантику.
Lisp:
(foo x y z) == foo . (quote x y z)

Haskell:
foo x y z   == ((foo $ x) $ y) $ z
foo (x,y,z) == foo $ (x,y,z)

где лисповский конструктор конс-пары . является заодно и аппликацией (т.е. хаскелловским оператором $).

Чтобы сделать карринг на лиспе, нужно перевернуть список с ног на голову (сделать так называемый снок-список)
((((foo . x) . y) . z)

Конечно, синтаксис вторичен, но не до такой же степени!
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[22]: ФП и абстракция списка
От: geniepro http://geniepro.livejournal.com/
Дата: 07.06.07 08:09
Оценка:
Здравствуйте, Кодт, Вы писали:

G>>Предлагаю перейти с Хаскелла на Лискелл!

G>>Семантика хаскелловская, синтаксис... Синтаксис вторичен! :о))

К>Не выйдет.

К>В Хаскелле и Лиспе разное строение синтаксических деревьев, что оказывает влияние на семантику.

Ну вапще-то автор Лискелла утверждает, что Лискелл — это именно хаскеллевская семантика с лисповским синтаксисом.
Даже компилятор Лискелла основан на GHC 5.04...
Re[23]: ФП и абстракция списка
От: Кодт Россия  
Дата: 07.06.07 08:46
Оценка: :)
Здравствуйте, geniepro, Вы писали:

G>Ну вапще-то автор Лискелла утверждает, что Лискелл — это именно хаскеллевская семантика с лисповским синтаксисом.

G>Даже компилятор Лискелла основан на GHC 5.04...

А... я думал, ты прикалываешься. Ан нет, действительно, http://liskell.org, http://clemens.endorphin.org/ILC07-Liskell-draft.pdf
Хотя, конечно, заодно приобретаем все прелести lots of silly idiotic paretheses...
... << RSDN@Home 1.2.0 alpha rev. 655>>
Перекуём баги на фичи!
Re[14]: ФП и абстракция списка
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 07.06.07 10:30
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>полиморфные коллекции — это соджержащие объекты разных типов, реализующих общий интерфейс. пусть скажем, это фигуры, которые можно рисовать на экране — треугольники, овалы и т.д. если каждый объект включает свою собственную VMT, то из неё вы узнаёте, как нарисовать это конкретный объект. если же вы перелаёте одну VMT на всё-про всё, то нифига хорошего не выйдет реализация этого требует так называемых existentials, которые включают VMT класса вместе с каждым объектом:


BZ>
BZ>diplayAll1 :: Figure a =>   [a] -> IO ()
BZ>diplayAll2 :: [exist a . Figure a => a] -> IO ()
BZ>


Разве в GHC есть exist? Я думал он через forall делается. Если есть — где почитать?

Насчёт forall — тут уже не будет так однозначно, т.к. тип
[forall a. Figure a => a]
описать можно, но использовать его элементы не получится. Пправда, не знаю почему — читал где-то, что функции не могут быть экзистенциальными, только типы. Т.е.

data Shape = forall a. Figure a => Shape a
displayAll :: [Shape] -> IO ()
displayAll = mapM_ display


уже сработает.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 08.06.07 11:46
Оценка:
Здравствуйте, dstatyvka, Вы писали:

VD>>С Хаскелем у меня вопросов нет. У меня вопрос в том может ли сама парадигма ФП предоставить что-то для решения этой проблемы? Или все она нуждается в расширении некой идеологией сходной с иделогией ОО-интерфейсов или классов типов Хаскеля?


D>Вопрос аналогичен следующему: "может ли сама парадигма императивного программирования предоставить что-то для решения этой проблемы?". Ответ на оба вопроса: "Нет, не может. Задача, неформулируемая в терминах парадигмы не может быть решена исключительно средствами парадигмы."


Это не вопрос. Это подлог. Потому как исходно речь шла об ООП. В ООП такие средства несомненно есть. В ФП,как мы выяснили, нет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: ФП и абстракция списка
От: dr.Chaos Россия Украшения HandMade
Дата: 08.06.07 12:07
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, dstatyvka, Вы писали:


VD>>>С Хаскелем у меня вопросов нет. У меня вопрос в том может ли сама парадигма ФП предоставить что-то для решения этой проблемы? Или все она нуждается в расширении некой идеологией сходной с иделогией ОО-интерфейсов или классов типов Хаскеля?


D>>Вопрос аналогичен следующему: "может ли сама парадигма императивного программирования предоставить что-то для решения этой проблемы?". Ответ на оба вопроса: "Нет, не может. Задача, неформулируемая в терминах парадигмы не может быть решена исключительно средствами парадигмы."


VD>Это не вопрос. Это подлог. Потому как исходно речь шла об ООП. В ООП такие средства несомненно есть. В ФП,как мы выяснили, нет.


Мы? Никола... Ой! VladD2?

Может это обобщенное программирование? здесь
Автор: dr.Chaos
Дата: 04.06.07
Побеждающий других — силен,
Побеждающий себя — Могущественен.
Лао Цзы
Re[9]: ФП и абстракция списка
От: dstatyvka  
Дата: 08.06.07 12:51
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, dstatyvka, Вы писали:


VD>>>С Хаскелем у меня вопросов нет. У меня вопрос в том может ли сама парадигма ФП предоставить что-то для решения этой проблемы? Или все она нуждается в расширении некой идеологией сходной с иделогией ОО-интерфейсов или классов типов Хаскеля?


D>>Вопрос аналогичен следующему: "может ли сама парадигма императивного программирования предоставить что-то для решения этой проблемы?". Ответ на оба вопроса: "Нет, не может. Задача, неформулируемая в терминах парадигмы не может быть решена исключительно средствами парадигмы."


VD>Это не вопрос. Это подлог.


Какой подлог? false analogy? это не она Был приведен вопрос, аналогичный обсуждаемому. Ответ был дан на оба вопроса, независимо.

VD>Потому как исходно речь шла об ООП. В ООП такие средства несомненно есть. В ФП,как мы выяснили, нет.


Исходно речь шла о решении проблемы, сформулированной в терминах ООП. Соответственно, можно сказать, что в ФП и проблемы-то такой нет.

Часто вижу, как ярые защитники императивных языков неверно истолковывают слова восторженных функциональщиков о бесполезности ООП. Часто имеется в виду очевидная вещь: в ФП отсутствуют многие проблемы императивного мира, в частности, решаемые средствами ООП (в тех ИЯ, где они есть). Т.е. на достаточно крупной задаче обнаружится наверное необходимость OOD и OO-средств, но этот момент наступит значительно позже, чем в императивном мире при прочих равных условиях. Например, решаемая задача в реальных условиях разработки на ФЯ попросту не возникнет, imo.
Re[10]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.07.07 18:35
Оценка:
Здравствуйте, dstatyvka, Вы писали:

D>Откуда взяться состоянию в "чистых" функциях? На которых свертка (fold в частности) реализуется элементарно.


Подумай.

VD>>Важно, что мы можем объеявить интерфейс Foldable (не важно будет ли это интерфейс Явы, трэйтс Скалы или класс типов Хаскеля), и реализовать его в/для разных (подчеркиваю, совсем разный) типов (таких как массивы, списки, деревья и т.п.).


VD>>Причем в Хаскеле это решили демонсративно назвать подругому (хотя все равно получилось несколько ООП-ообразно, классы все же тоже попахивают ООП-ом). Хотя ничто не мешало не компостировать могз окружающим и назвать это интерфейсами.


D>Не стоит так переживать за собственные мозги, небольшой шок им не повредит. Например, для того, чтобы перестать пытаться заткнуть ОО-средствами императивных языков все дыры.


Алё! Гараж? Я вообще-то говорил о выборе устоявшихся терминов. Другими словами, о том, что не стоит придумывать уникальную терминалогию без необходимости.

D>Кроме того, не думаю, что словосочетание "интерфейс типа данных" было бы удачнее "класс типов данных".


А зачем "интерфейс типа данных" просто "интерфейс" было бы достаточно. Просто особенность Хаскеля заключается в том, что интерфес может быть реализован и для уже существующего типа данных, в том время как в классических ЯП они обычно реализуются в самом описании типа данных. Это несомненно очень удобная особенность, но сути дела она все же не меняет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.07.07 18:35
Оценка:
Здравствуйте, dstatyvka, Вы писали:

D>Исходно речь шла о решении проблемы, сформулированной в терминах ООП. Соответственно, можно сказать, что в ФП и проблемы-то такой нет.


Проблема есть. Ести кто-то ее не хочет замечать, то это его проблемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.07.07 18:35
Оценка: -1 :)
Здравствуйте, BulatZiganshin, Вы писали:

BZ>у тебя же всё как всегда сводится к лозунгам: макросы хорошо (посокльку они есть в немерле), система типов плохо (поскольку есть в C++).


Примеры подобных высказываний с моей стороны в студию. До тех пор будем считать это вымыслом.

BZ>неужто ты не понимаешь, что некоторые задачи решаются проще на одном, другие — на другом?


Я заню только две задачи которые на С++ диелаются лучше всего:
1. Писать С++-код.
2. Делать ошибки.

Если этих задач не стоит, то всгеда можно найти лучший инструмент.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.07.07 18:35
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

К>>Особенность ООП — это полиморфизм времени исполнения. Классы типов же относятся исключительно ко времени компиляции.


BZ>это не так. читай статью Вадлера или объяснения, которые я давал Владу. повторять это в 4-й раз у меня нет желания


Лучше давать сыылку...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ФП и абстракция списка
От: dstatyvka  
Дата: 09.07.07 21:36
Оценка:
Здравствуйте, VladD2, Вы писали:

D>>Откуда взяться состоянию в "чистых" функциях? На которых свертка (fold в частности) реализуется элементарно.


VD>Подумай.


Э... Просветишь? На всякий случай напомню, что чистыми называются функции, результат вычисления которых зависит исключительно от значений ее параметров.

VD>>>Причем в Хаскеле это решили демонсративно назвать подругому (хотя все равно получилось несколько ООП-ообразно, классы все же тоже попахивают ООП-ом). Хотя ничто не мешало не компостировать могз окружающим и назвать это интерфейсами.


D>>Не стоит так переживать за собственные мозги, небольшой шок им не повредит. Например, для того, чтобы перестать пытаться заткнуть ОО-средствами императивных языков все дыры.


VD>Алё! Гараж? Я вообще-то говорил о выборе устоявшихся терминов. Другими словами, о том, что не стоит придумывать уникальную терминалогию без необходимости.


Согласен, но в данном случае, необходимость очевидна, по меньшей мере, тем, кто потрудился выяснить суть обсуждаемого термина. Я думаю, этому (выяснению) может мешать костность мышления, часто преодолеваемая при помощи шоковой терапии.

Кстати, использование терминов class и instance в Haskell я тоже не считаю удачным решением, в силу той же перегруженности терминов.

D>>Кроме того, не думаю, что словосочетание "интерфейс типа данных" было бы удачнее "класс типов данных".


VD>А зачем "интерфейс типа данных" просто "интерфейс" было бы достаточно.


'Просто "интерфейс"' — термин очень перегруженный.

VD>Просто особенность Хаскеля заключается в том, что интерфес может быть реализован и для уже существующего типа данных, в том время как в классических ЯП они обычно реализуются в самом описании типа данных. Это несомненно очень удобная особенность, но сути дела она все же не меняет.


В целом, мысль понятна. Однако, классы типов в Haskell допускают default-рализацию, в том числе частичную, что, согласись, также не свойственно интерфейсам в обсуждаемом смысле, ближе к абстрактным классам в ОО.
Re[11]: ФП и абстракция списка
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 10.07.07 12:18
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Алё! Гараж? Я вообще-то говорил о выборе устоявшихся терминов. Другими словами, о том, что не стоит придумывать уникальную терминалогию без необходимости.


Классы типов — это не ОО-интерфейсы. Не скажу "совсем не", скорее "не совсем". Возможно поэтому то и термин взяли "неустоявшийся".

Вот класс типа MArray и его реализация.

class (HasBounds a, Monad m) => MArray a e m
instance MArray (STArray s) e (ST s)


Какой тип данных реализует здесь "интерфейс" MArray?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[12]: ФП и абстракция списка
От: no4  
Дата: 10.07.07 13:37
Оценка:
Здравствуйте, lomeo, Вы писали:

L>Классы типов — это не ОО-интерфейсы. Не скажу "совсем не", скорее "не совсем". Возможно поэтому то и термин взяли "неустоявшийся".


А может, такое быть, что "класс типов" термин устоявшийся, но только у математиков?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: ФП и абстракция списка
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 10.07.07 13:51
Оценка: +1
Здравствуйте, no4, Вы писали:

no4>А может, такое быть, что "класс типов" термин устоявшийся, но только у математиков?


Сомневаюсь. Устоявшийся он, по видимому, только в Haskell.
Поскольку, насколько я знаю, впервые появился в этом языке.
Первая статья о них -- это, кажется, Вадлеровская "How to Make Ad-Hoc Polymorphism Less Ad Hoc", где они и были предложены.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: ФП и абстракция списка
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.07.07 00:45
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>нет, Влад, не разобрался. ты судишь о них чисто по синтаксическим свойствам, не понимая, как они реализуются. напомнить тебе ещё раз про передачу невидимого аргумента?


Напомин.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: ФП и абстракция списка
От: Klapaucius  
Дата: 11.07.07 12:00
Оценка:
Здравствуйте, VladD2, Вы писали:

BZ>>напомнить тебе ещё раз про передачу невидимого аргумента?

VD>Напомин.

Классы типов как они есть
Автор: BulatZiganshin
Дата: 06.06.07
... << RSDN@Home 1.2.0 alpha rev. 677>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.