LINUX.ORG.RU
Ответ на: комментарий от KblCb

В данном контексте dynamic_cast - то ещё говно. Считай, отказ от этой самой желанной типизации.

yoghurt ★★★★★
()
Ответ на: комментарий от KblCb

>Однако это не объясняет почему объектам предметной области статическая типизация мешает.

Во-первых, объекты предметной области не создаются одномоментно. Во-вторых, они создаются из нетипизированных данных: читаешь файл — (Byte)String'и, анализируешь сетевой протокол — ByteString'и, читаешь из БД — какой-то хендлер-обертка и т.д.

Динамическая типизация дает массу «коротких» путей, хотя и в ущерб безопасности. А в хаскеле иногда приходится конретно извращаться: парсим, конвертируем типы, собираем из кусков, только за тем чтобы преобразовать в те же Стринги и передать дальше по цепочке.

Macil ★★★★★
()
Ответ на: комментарий от ander-skirnir

> вот в хаскеле нельзя `с-x c-e`, `c-c c-c` на закрывающей скобочке, и даже нельзя `c-c c-r`. Только перезагрузка модуля в repl целиком. Некоторые считают, что одних только этих фич достаточно, чтобы предпочесть хаскелю Лисп

Эти люди не понимают толком ни хаскеля, ни лиспа. Им просто нужен ылитный язык.

tailgunner ★★★★★
()
Ответ на: комментарий от Macil

Да. Есть такое дело. Сам недавно наелся этим в полный рост. Однако я решительно не понимаю как в борьбе с сериализацией/десериализацией поможет динамическая типизация. Парсер будет не нужен? Функция-диспетчер?

KblCb ★★★★★
()
Ответ на: комментарий от KblCb

> Да. Это был мой вопрос. Объясните пожалуйста зачем нужен REPL. Я не умею им пользоваться

Ну так научись пользоваться, тогда поймешь, зачем он нужен.

anonymous
()
Ответ на: комментарий от KblCb

>понимаю как в борьбе с сериализацией/десериализацией

В принципе, дальше — больше. Объектом предметной области надо как-то еще управлять. Появляется набор функций, все это сводится в тайпклассы или обычные ООП-классы... Структура объекта предметной области может меняться, по идее, где-то нужно хранить метаданные объекта, а это уже TemplateHaskell и все-равно перекомпиляция...

CLOS в CL сделан как раз для решения этой проблемы. В Xerox'e совсем не дураки сидели...

А динамическия типизация помогает следующим образом. Во-первых, можно невозбранно сложить 2 + 2.0 + «2» и получить 6. Во-вторых, можно динамически собирать классы и даже мета-классы. В-третьих, всегда можно проигнорировать проверку, которую в хаскеле не проигнорируешь. В четвертых, в динамических языках можно невозбранно заниматься интроспекцией полей/методов.

Повторюсь, я динамическую типизацию очень и очень сильно не люблю, но иногда посреди жуткого раздрая из datatype'ов охватывает сильное желание все похерить.

Macil ★★★★★
()

потому что у Haskell клёвое сообщество, которое не тратит время на грызню в спорах вида «какой стиль программирования на CL более Ъ?» :)

jtootf ★★★★★
()
Ответ на: комментарий от Macil

Во-первых, можно невозбранно сложить 2 + 2.0 + «2»

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

provaton ★★★★★
()
Ответ на: комментарий от Macil

2 + 2.0 + «2»

provaton прав, в языке со строгой типизацией это не пройдет. В какой-то нестрогой Lua - да, но то уровень скриптовых языков, там безопасность вообще минимально нужна.
Динамическая типизация нужна например для того, чтобы написать один map, принимающий арбитрарное количество аргументов-коллекций и арбитрарную же функция для этого количества, а не городить клонов в стиле zip2, zip3, zip4.

unlog1c ★★★
()
Ответ на: комментарий от provaton

$ ledit ocaml Objective Caml version 3.11.2

_________________________ [| + | | Batteries - | |_____|_|_________________| _________________________ | - Type '#help;;' | | + |] |___________________|_|___|

Loading syntax extensions...    Camlp4 Parsing version 3.11.2

# 2 + 2.0;; Error: This expression has type float but an expression was expected of type int

anonymous
()
Ответ на: комментарий от anonymous

Это потому, что в еретическом окамле нету хаскелловских тайп классов!

provaton ★★★★★
()

А че спорить-то? Что хачкель, что лисп - одинковое маргинальное овно. Стабильный рост интереса к хацкеллю находится где-то в пределах статистической погрешности если сравнивать с чем-то более востребованным. Статическая типизация хачкеля - полное г. На языке надо изъясняться просто и понятно, а не писать оправдания для компиялтора, макросы лиспа - debugging hell. ТС видимо пьян.

cathode
()
Ответ на: комментарий от cathode

А че спорить-то? Что хачкель, что лисп - одинковое маргинальное овно. Стабильный рост интереса к хацкеллю находится где-то в пределах статистической погрешности если сравнивать с чем-то более востребованным. Статическая типизация хачкеля - полное г. На языке надо изъясняться просто и понятно, а не писать оправдания для компиялтора, макросы лиспа - debugging hell. ТС видимо пьян.

Молодец, по полочкам всё разложил. А мужики-то не знают, мучаются.

unlog1c ★★★
()
Ответ на: комментарий от provaton

ы?

Хе-хе-хе. Лучше это сделать вот так:

worker@acer:~/opt/ghc/bin$ ./ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> let a = 2
Prelude> :t a
a :: Integer
Prelude> a + 2
4
Prelude> a + 2.0

<interactive>:1:5:
    No instance for (Fractional Integer)
      arising from the literal `2.0'
    Possible fix: add an instance declaration for (Fractional Integer)
    In the second argument of `(+)', namely `2.0'
    In the expression: a + 2.0
    In an equation for `it': it = a + 2.0
Macil ★★★★★
()
Ответ на: комментарий от unlog1c

>> А мужики-то не знают, мучаются.

Нормальные мужики не мучаются, мучаются ненормальные

cathode
()
Ответ на: комментарий от mv

Ну вот в случае с CL нередки коммиты вроде: «№ля, забыл сохранить буфер в Емаксе!».

Э-э-э... это преимущество?

Miguel ★★★★★
()
Ответ на: комментарий от Macil

Хе-хе-хе. Лучше это сделать вот так:

Yawn.

MigMit:~ MigMit$ ghci -XNoMonomorphismRestriction
GHCi, version 6.12.3: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> let a = 2
Prelude> :t a
a :: (Num t) => t
Prelude> a + 2
4
Prelude> a + 2.0
4.0
Prelude> :q
Leaving GHCi.
MigMit:~ MigMit$ 

Miguel ★★★★★
()
Ответ на: комментарий от mv

> Лиспе можно исследовать живой образ, отслеживать эволюцию данных, менять код - не менее ценное свойство. Я тему, собственно, с расчётом на обсуждение таких фич и завёл, а она, как всегда, скатилась в банальный срач о типах.

уж не думаешь ли ты, что в языках со статической типизацией это принципиально невозможно?

www_linux_org_ru ★★★★★
()

mv, профита от всех этих срачей, что идут здесь уже лет 10 ровно ноль, надо менять тактику и переходить к плану Б: «писать код, блять».

archimag ★★★
()
Ответ на: комментарий от www_linux_org_ru

>> уж не думаешь ли ты, что в языках со статической типизацией это принципиально невозможно?

Нет, это у лисперов комплекс такой - «ОБРАЗ». Они будут доказывать, что есть молоток и им удобно забивать гвозди, а когда им показывают саморез и отвертку они говорят, что «ну ведь есть же молоток и гвозди».

cathode
()
Ответ на: комментарий от cathode

<KO>
лисперы - это такая секта: они пытаются завербовать побольше народу и заставить их писать для них код; и если с остальными языками такие «проповедники» - редкость, то у лисперов каждый второй, вероятно они считают, что все их проблемы в одном - их незаслуженно обделили вниманием
</KO>

aho
()
Ответ на: комментарий от geekless

Вы ведь хотели сказать: «осталось изобрести хаскель для богатых», не?

malbolge ★★
()
Ответ на: комментарий от cathode

> Аналогия с пидо^w бррр c геями будет политкорректной?

вероятно стоит об этом спросить у самих гее^w лисперов

aho
()
Ответ на: комментарий от aho

Не уверен, что пидо^w кхм... геи, пардон, лисперы могут адекватно отвечать на прямо поставленные вопросы. Они же ведь обиженные, у них ОБРАЗ и все такое...

cathode
()
Ответ на: комментарий от www_linux_org_ru

> уж не думаешь ли ты, что в языках со статической типизацией это принципиально невозможно?

Невозможно, потому что если мы написали ф-ю f:A->B, потом ф-ю, которая применя к этой f, то теперь мы не можем изменить тип f например на A->C - должна быть ошибка типов в этом случае. Если же можем - то у нас нарушаются инварианты и это ничем не отличается от динамический типизации.

anonymous
()
Ответ на: комментарий от cathode

> а когда им показывают саморез и отвертку они говорят, что «ну ведь есть же молоток и гвозди».

Вот она вся суть хаскелистов. Надо гвоздь забить, а они мне вместо молотка суют отвертку. Зато с монадами. Видимо, монадической отверткой с такой-то системой типов гвозди забивать проще, чем обычной.

anonymous
()

Просмотрел тред. Вывод: не надо было создавать такую тему на ЛОРе.

почему гуглевый тренд показывает стабильный рост интереса к Хаскеллю

Видимо потому, что он в научных кругах больше популярен.

стабильное отсутствие роста интереса к лиспам.

Может, Лисп заполнил свою нишу...

И вообще, что там Дональд Кнут говорил про популярность ЯП? ;)

http://www.brainyquote.com/quotes/quotes/d/donaldknut181626.html

The most important thing in the programming language is the name. A language will not succeed without a good name. I have recently invented a very good name and now I am looking for a suitable language.

Кстати, по поводу цитаты: шутки шутками, а у Хаскелля отличнейший(!) сайт - самый лучший из всех, которых я когда-либо видел. Я начал смотреть в его сторону как раз после того, как нашел на нем много публикаций на интересующие меня темы. И такой штуки с Лиспом я тоже не видел =)

kermzyxer
()
Ответ на: комментарий от anonymous

Чтобы забить саморез монады не нужны. В конце концов есть экзистенциальные типы молотоков ))) Когда речь идет о забивании гвоздей - welcome, когда речь идет о «накидать сайт», что-то хостингов с CL на борту не видно. При чем здесь сайт? Ну вот задача такая, из жизни. В ней мне SICP и PAIP со своими «методами русского крестьянина» ничем не могут помочь. Нет батареек. А так да, красиво конечно, но почему-то все это быстрее делается на C, Perl и PHP.

cathode
()
Ответ на: комментарий от cathode

Все правильное сказал! Кому нужны эти функциональные языки? Только всяким задротам, которые учат матан вместо того, чтобы заниматься чем-то серьезным: например, писать на php. Мы тут таких не любим!

kermzyxer
()
Ответ на: комментарий от kermzyxer

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

Бред. «Научные круги» на 99.9% состоят из тех кому нужны численные методы, формулируемые в терминах императивных языков. Из этих «99.9» чуть меньше чем все используют готовые продукты, специализированные в конкретной области. «Научные круги», как ты выразился, больше волнует погрешность разностной схемы чем мнения ЛОРовских языковедов.

cathode
()
Ответ на: комментарий от cathode

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

Бред. «Научные круги» на 99.9% состоят из тех кому нужны численные методы

И правда бред.

tailgunner ★★★★★
()
Ответ на: комментарий от encyrtid

> Ппц, нашли что сравнивать...

Ну, а почему бы и нет? В конце концов ведь цель их изучения одна и та же, в 99% случаев.

anonymous
()
Ответ на: комментарий от anonymous

> Видимо, монадической отверткой с такой-то системой типов гвозди забивать проще, чем обычной.

Ты не понял: монадическая отвёртка может в анаморфизмы, катаморфизмы, хиломорфизмы, параморфизмы наконец!

anonymous
()
Ответ на: комментарий от tailgunner

>> И правда бред

Вот и 99.9% МНС и СНС подтянулись. Мсье расскажет чем для Рассейской науки интересен Хацкелъ?

cathode
()
Ответ на: комментарий от cathode

>накидать сайт
>PHP
О, великий гуру! Вы случайно не по видеоурокам «PHP за 22 часа 33 минуты» училиись? А то, я вижу, вы в совершенстве обладаете знанием КАК Делать, а не ЧТО Делать.

unlog1c ★★★
()
Ответ на: комментарий от anonymous

>> монадическая отвёртка может

Добавль дровишек...
Гомеоморфизмы, изомофрзмы, афинные преобразования, идемпотентые операторы, теорема Пуанкаре-Хопфа и прочий геометрический бред )))

cathode
()
Ответ на: комментарий от cathode

Я имел ввиду больше популярен, чем Лисп. (это мое скромное личное мнение, возможно надуманное)

Из этих «99.9» чуть меньше чем все используют готовые продукты, специализированные в конкретной области.

Вот и Haskell - плацдарм для исследований в области ЯП. Он ведь так и создавался. Чем не готовый продукт?

ЛОРовских языковедов.

обрати внимание, что из нас двоих, только ты в треде делал ни на чем не основанные заявления о том, какие ЯП лучше, а какие лучше.

kermzyxer
()
Ответ на: комментарий от mv

> К тому же, лисповоды - милые общительные люди

VSL, Love5an, Золотце, Eric Naggum, кучка здешних неадекватов.

а хаскеллисты - зануды :-P


Зануднее archimag'а я не встречал персонажа. По мне так он квинтэссенция занудства и уныния.

anonymous
()
Ответ на: комментарий от kermzyxer

> больше популярен

какие ЯП лучше, а какие лучше.

ну, я надеюсь, ты меня понял :)

kermzyxer
()
Ответ на: комментарий от mv

> Ты, дорогой аноним, хаскеллю приписал характеристики, которые уникальными не являются.

Ты, дорогой Веталег, мне приписал приписывание. А я только хотел сказать, что, пользуясь твоими приёмчиками, можно любой подход и метод отвергнуть как «клише». Таким образом, твоя аргументация абсурдна.

anonymous
()
Ответ на: комментарий от unlog1c

>> О, великий гуру! Вы случайно не по видеоурокам ...

Слава богу, что ты отыскал два знакомых слова - «PHP» и «сайт». Сразу виден аналитический склад ума.

КАК Делать, а не ЧТО Делать.

?

cathode
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.