Да я пользователей Схемы-то и не вижу. Всё вокруг товарищи на CL.
Вот ты, ты что используешь?
Сами лисперы Схему-то лиспом (современным лиспом) особо не считают. Тому доказательство Википедия, статья про Схему.
Не считать же любое творение с s-exp Лиспом?
>у хаскеля постоянно "а вот есть специальные функции типа +, которые безо всяких амперсандов можно юзать как "
Приведи цитату.
>То, что лисп проще, показывается простым фактом, о котором я уже упоминал - я (и не только я) начал что-то писать на лиспе после 20 минут.
Что-то доказывается статистикой, а не анекдотом.
Что-то писать через 20 минут можно на чём угодно, было бы желание. Сможешь ли ты въехать в чужой код за пару недель - вот вопрос.
>На Хаскеле такого не получается.
У меня уже статистика, надо сказать. 2 недели хватает программисту, чтобы начинать дополнять творение коллективного разума с хитровывернутыми типами. По 3 людям уже. Только на текущей работе.
>Зачем ты наезжаешь на такой прекрасный инженерный язык, как лисп, я не понимаю :)
Он когда-то был "прекрасным инженерным языком". Когда альтернатив не было. Года до 1978.
Я юзаю racket, то есть схему на стероидах. Pure scheme уныла для любой задачи, кроме обучения программированию.
Схема - это лисп-1, типа официальный представитель ;) Что там википедия пишет - мне лично насрать :) Что конкретно считать лиспом, а что нет - вопрос сложный. По факту получается так, что если есть sexp-ы и макросы, то это лисп (по крайней мере опровержений такого критерия что-то в голову не приходит - в clips, которая таки не лисп, макросов вроде нету).
Про амперсанды - Сергей, ну вы что же меня в выходной заставляете искать всякое, да ещё и во флудерском споре? :) Имейте совесть.
Вообще, я имел в виду вот это: a + b, но при этом div a b, но можно и a `div` b, ну и + a b тоже можно (но я уже забыл как так сделать) - ну что это такое? Где консистентность? То, что в лиспе (common lisp) есть спецформы - это просто нюанс. Любому человеку можно сказать, что на первом месте в sexp-е находится имя функции, а остальное - это аргументы. Остальные детали не мешают понимать код.
Про две недели говорить не хочу, ибо очень субъективная вещь, при этом у меня есть мнение (хрен оспоришь) что сложнее въезжать не в технологии, а в предметную область и историю (backward compatibility, традиции, принципы принятия решений, приоритеты) проекта. У меня вот есть статистика, что шесть человек, не имеющих опыта программирования, после часовой лекции по scheme пошли коммитить в работающий проект, и всё было нормально.
Про инженерные языки. Ты предлагаешь хаскель в качестве такового? Он не годится.
>Про инженерные языки. Ты предлагаешь хаскель в качестве такового? Он не годится.
Почему?
>Вообще, я имел в виду вот это: a + b, но при этом div a b, но можно и a `div` b, ну и + a b тоже можно (но я уже забыл как так сделать) - ну что это такое? Где консистентность?
(+) a b, а также (a +) b и (+ b) a. Это всё удобные сокращения, чтобы не плодить безымянные функции, где можно без них обойтись.
>То, что в лиспе (common lisp) есть спецформы - это просто нюанс. Любому человеку можно сказать, что на первом месте в sexp-е находится имя функции, а остальное - это аргументы. Остальные детали не мешают понимать код.
Ох ты. И вдруг получается, что не всякую функцию можно передать аргументом. zipWith3 if conditions trues falses не работает. Действительно, нюанс.
>Про амперсанды - Сергей, ну вы что же меня в выходной заставляете искать всякое, да ещё и во флудерском споре? :) Имейте совесть.
Хаскель не годится в качестве инженерного потому что он сложный :) Ну и ещё там неудобно с сайд-эффектами писать.
Насчёт удобных сокращений - (a +) b - это что вообще такое? В смысле, что оно делает? Создаёт функцию f x = a + x и применяет к ней аргумент b? Как можно такой синтаксис легко понимать? Я про то и говорю - я не могу хаскельный код читать, потому что там закорючек больше чем в перле, при этом каждая может поменять смысл строчки. Ей-богу, мелкая путаница с порядком вычислений в лиспе (которая, прошу заметить, не имеет практически никакого значения в 90% программ) гораздо меньший минус, чем вот это вот в хаскеле (отсутствие карринга в лиспе раздражает гораздо больше). Вспомним ещё всякие стрелки и вообще кранты. Да даже от точек у меня срыв мозга случается. А это только синтаксис же, ещё до типов и классов типов не дошли даже!!111
Насчёт "не всякую функцию можно передать аргументом" - не совсем понял. Пример (на лиспе, не на хаскеле) можно?
>Хаскель не годится в качестве инженерного потому что он сложный :)
Это опять следует из твоих действий?
>Ну и ещё там неудобно с сайд-эффектами писать.
Удобней многих других ЯП.
Чтобы побочные эффекты были везде - так да, трудней писать. А это действительно важно, писать именно так?
>Насчёт "не всякую функцию можно передать аргументом" - не совсем понял. Пример (на лиспе, не на хаскеле) можно?
if выглядит, как обычная функция. Можно ли её передавать аргументом в другую функцию?
Сможешь ли ты написать функцию zipWith3, принимающую на вход функцию и три списка - всего четыре аргумента, - и возвращающую список наименьшей из трёх входных длины, который получается применением функции к значениям с одинаковым индексом из трёх списков?
zipWith3 f [] _ _ = [] zipWith3 f _ [] _ = [] zipWith3 f _ _ [] = [] zipWith3 f (a:as) (b:bs) (c:cs) = f a b c : zipWith3 f as bs cs
Сможешь ли ты передать в zipWith3 "функцию" if?
>каждая может поменять смысл строчки
Не может. Или приведи пример, только посложней, чем a + b.
>Ей-богу, мелкая путаница с порядком вычислений в лиспе (которая, прошу заметить, не имеет практически никакого значения в 90% программ) гораздо меньший минус, чем вот это вот в хаскеле (отсутствие карринга в лиспе раздражает гораздо больше).
Это прямое следствие карринга, надо сказать.
См. также J/K.
>Вспомним ещё всякие стрелки и вообще кранты.
Какие стрелки?
>Да даже от точек у меня срыв мозга случается.
Что за точки?
>А это только синтаксис же, ещё до типов и классов типов не дошли даже!!111
>> Хаскель не годится в качестве инженерного потому что он сложный :) > Это опять следует из твоих действий?
"Это" - это что? То, что Хаскель сложный, или то, что инженерный язык должен быть простой? Про сайд-эффекты - шутка.
Про zipWith3: если бы это был LOR, то я дал бы тебе решение (переопределив if так, чтобы он не был спецформой и реализовав его функциональность, например, через cond). Ну а если нормально разговаривать то да, в данном случае надо знать, что if - это спецформа. В каких языках нет подобного?
> Какие стрелки?
Ну arrows блин, все эти -< да >>> сотоварищи.
> Что за точки?
foo = bar . baz вместо foo x = bar (baz x) В простых варинтах понятно всё, в сложных - мозг ломается на парсинге.
>данном случае надо знать, что if - это спецформа. В каких языках нет подобного?
В которых есть синтаксис. В которых нет специальных форм и макросов, не отделённых специальным синтаксисом.
>> Какие стрелки? >Ну arrows блин, все эти -< да >>> сотоварищи. >> Что за точки? >foo = bar . baz вместо foo x = bar (baz x) >В простых варинтах понятно всё, в сложных - мозг ломается на парсинге.
Это всё не синтаксис. Это уже работа с функциями.
Макс пообещал поднять mskhug.ru, пока он лежит. Потом, если будет время, посмотри на примеры моего кода на http://thesz.mskhug.ru/svn/ и скажи, что непонятно.
Вот знаете, я когда-то Хаскель тоже не знал и учил. Вот ни одной перечисленной проблемы не испытал. Другие были, но это либо троллинг, либо детский сад какой-то.
Вот ты, ты что используешь?
Сами лисперы Схему-то лиспом (современным лиспом) особо не считают. Тому доказательство Википедия, статья про Схему.
Не считать же любое творение с s-exp Лиспом?
>у хаскеля постоянно "а вот есть специальные функции типа +, которые безо всяких амперсандов можно юзать как "
Приведи цитату.
>То, что лисп проще, показывается простым фактом, о котором я уже упоминал - я (и не только я) начал что-то писать на лиспе после 20 минут.
Что-то доказывается статистикой, а не анекдотом.
Что-то писать через 20 минут можно на чём угодно, было бы желание. Сможешь ли ты въехать в чужой код за пару недель - вот вопрос.
>На Хаскеле такого не получается.
У меня уже статистика, надо сказать. 2 недели хватает программисту, чтобы начинать дополнять творение коллективного разума с хитровывернутыми типами. По 3 людям уже. Только на текущей работе.
>Зачем ты наезжаешь на такой прекрасный инженерный язык, как лисп, я не понимаю :)
Он когда-то был "прекрасным инженерным языком". Когда альтернатив не было. Года до 1978.
Reply
Pure scheme уныла для любой задачи, кроме обучения программированию.
Схема - это лисп-1, типа официальный представитель ;) Что там википедия пишет - мне лично насрать :)
Что конкретно считать лиспом, а что нет - вопрос сложный. По факту получается так, что если есть sexp-ы и макросы, то это лисп (по крайней мере опровержений такого критерия что-то в голову не приходит - в clips, которая таки не лисп, макросов вроде нету).
Про амперсанды - Сергей, ну вы что же меня в выходной заставляете искать всякое, да ещё и во флудерском споре? :) Имейте совесть.
Вообще, я имел в виду вот это: a + b, но при этом div a b, но можно и a `div` b, ну и + a b тоже можно (но я уже забыл как так сделать) - ну что это такое? Где консистентность? То, что в лиспе (common lisp) есть спецформы - это просто нюанс. Любому человеку можно сказать, что на первом месте в sexp-е находится имя функции, а остальное - это аргументы. Остальные детали не мешают понимать код.
Про две недели говорить не хочу, ибо очень субъективная вещь, при этом у меня есть мнение (хрен оспоришь) что сложнее въезжать не в технологии, а в предметную область и историю (backward compatibility, традиции, принципы принятия решений, приоритеты) проекта. У меня вот есть статистика, что шесть человек, не имеющих опыта программирования, после часовой лекции по scheme пошли коммитить в работающий проект, и всё было нормально.
Про инженерные языки. Ты предлагаешь хаскель в качестве такового? Он не годится.
Reply
Почему?
>Вообще, я имел в виду вот это: a + b, но при этом div a b, но можно и a `div` b, ну и + a b тоже можно (но я уже забыл как так сделать) - ну что это такое? Где консистентность?
(+) a b, а также (a +) b и (+ b) a. Это всё удобные сокращения, чтобы не плодить безымянные функции, где можно без них обойтись.
>То, что в лиспе (common lisp) есть спецформы - это просто нюанс. Любому человеку можно сказать, что на первом месте в sexp-е находится имя функции, а остальное - это аргументы. Остальные детали не мешают понимать код.
Ох ты. И вдруг получается, что не всякую функцию можно передать аргументом. zipWith3 if conditions trues falses не работает. Действительно, нюанс.
>Про амперсанды - Сергей, ну вы что же меня в выходной заставляете искать всякое, да ещё и во флудерском споре? :) Имейте совесть.
А когда ещё? Сейчас самое время.
Reply
Говорят, явщиков раздражают всякие значки. Они лучше 5 слов напишут, чем поставят 3 кракозябры.
Reply
Reply
Reply
Reply
Ну и ещё там неудобно с сайд-эффектами писать.
Насчёт удобных сокращений - (a +) b - это что вообще такое? В смысле, что оно делает? Создаёт функцию f x = a + x и применяет к ней аргумент b? Как можно такой синтаксис легко понимать? Я про то и говорю - я не могу хаскельный код читать, потому что там закорючек больше чем в перле, при этом каждая может поменять смысл строчки. Ей-богу, мелкая путаница с порядком вычислений в лиспе (которая, прошу заметить, не имеет практически никакого значения в 90% программ) гораздо меньший минус, чем вот это вот в хаскеле (отсутствие карринга в лиспе раздражает гораздо больше). Вспомним ещё всякие стрелки и вообще кранты. Да даже от точек у меня срыв мозга случается. А это только синтаксис же, ещё до типов и классов типов не дошли даже!!111
Насчёт "не всякую функцию можно передать аргументом" - не совсем понял. Пример (на лиспе, не на хаскеле) можно?
Reply
Это опять следует из твоих действий?
>Ну и ещё там неудобно с сайд-эффектами писать.
Удобней многих других ЯП.
Чтобы побочные эффекты были везде - так да, трудней писать. А это действительно важно, писать именно так?
>Насчёт "не всякую функцию можно передать аргументом" - не совсем понял. Пример (на лиспе, не на хаскеле) можно?
if выглядит, как обычная функция. Можно ли её передавать аргументом в другую функцию?
Сможешь ли ты написать функцию zipWith3, принимающую на вход функцию и три списка - всего четыре аргумента, - и возвращающую список наименьшей из трёх входных длины, который получается применением функции к значениям с одинаковым индексом из трёх списков?
zipWith3 f [] _ _ = []
zipWith3 f _ [] _ = []
zipWith3 f _ _ [] = []
zipWith3 f (a:as) (b:bs) (c:cs) = f a b c : zipWith3 f as bs cs
Сможешь ли ты передать в zipWith3 "функцию" if?
>каждая может поменять смысл строчки
Не может. Или приведи пример, только посложней, чем a + b.
>Ей-богу, мелкая путаница с порядком вычислений в лиспе (которая, прошу заметить, не имеет практически никакого значения в 90% программ) гораздо меньший минус, чем вот это вот в хаскеле (отсутствие карринга в лиспе раздражает гораздо больше).
Это прямое следствие карринга, надо сказать.
См. также J/K.
>Вспомним ещё всякие стрелки и вообще кранты.
Какие стрелки?
>Да даже от точек у меня срыв мозга случается.
Что за точки?
>А это только синтаксис же, ещё до типов и классов типов не дошли даже!!111
Я не понимаю, о чём ты.
Reply
> Это опять следует из твоих действий?
"Это" - это что? То, что Хаскель сложный, или то, что инженерный язык должен быть простой?
Про сайд-эффекты - шутка.
Про zipWith3: если бы это был LOR, то я дал бы тебе решение (переопределив if так, чтобы он не был спецформой и реализовав его функциональность, например, через cond). Ну а если нормально разговаривать то да, в данном случае надо знать, что if - это спецформа. В каких языках нет подобного?
> Какие стрелки?
Ну arrows блин, все эти -< да >>> сотоварищи.
> Что за точки?
foo = bar . baz вместо foo x = bar (baz x)
В простых варинтах понятно всё, в сложных - мозг ломается на парсинге.
Reply
В которых есть синтаксис. В которых нет специальных форм и макросов, не отделённых специальным синтаксисом.
>> Какие стрелки?
>Ну arrows блин, все эти -< да >>> сотоварищи.
>> Что за точки?
>foo = bar . baz вместо foo x = bar (baz x)
>В простых варинтах понятно всё, в сложных - мозг ломается на парсинге.
Это всё не синтаксис. Это уже работа с функциями.
Макс пообещал поднять mskhug.ru, пока он лежит. Потом, если будет время, посмотри на примеры моего кода на http://thesz.mskhug.ru/svn/ и скажи, что непонятно.
Reply
Reply
Leave a comment