LINUX.ORG.RU

Языку Haskell исполнился 21 год

 ,


0

3

1 апреля 1990 года был опубликован документ под названием «The Haskell Report», а также первый стабильный релиз того самого ЯП для штангистов.

>>> Подробности



Проверено: svu ()
Последнее исправление: Dendy (всего исправлений: 2)

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

>Ну то есть фугкций с пустой областью определения в Хаскеле нет, но есть значения?

Эм.. функция с пустым множеством определения - это вообще не то, и на роль константы претендовать никак не может

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

>> Причем из-за того, что в реальном мире обрабатываются почти всегда данные лежащие за пределами программы

Слушай, ты хоть одну программу когда-нибудь писал?

Куски, отвечающие за взаимодействие с внешним миром, занимают ничтожные промилле по сравнению с тем, что происходит исключительно внутри машины. Как бывший геймдевелопер тебе говорю.

Это вообще шедевр!!!!

Гейм девелопер без взаимодействия с пользователями?

Крута!!!!

Браво!!!! Бис!!!

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

>Можно сказать, что с условно пустой областью определения есть. Например, const 5 :: () -> Int — на вход может быть подано только одно значение, так что его можно смело игнорировать. И, разумеется, есть значения, не являющиеся функциями.

Только множество определения в () -> Int не пустое

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

>Это вообще шедевр!!!!

Гейм девелопер без взаимодействия с пользователями?

Крута!!!!

Браво!!!! Бис!!!

Убейся. Откуда такие как вы вообще беретесь?

В хаскеле принято разделять функции для непосредственной работы с внешним миром от логики обработки всего этого. Кстати, это очень неплохо и для любого другого языка программирования.

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

>> Можно сказать, что с условно пустой областью определения есть. Например, const 5 :: () -> Int — на вход может быть подано только одно значение, так что его можно смело игнорировать. И, разумеется, есть значения, не являющиеся функциями.

Только множество определения в () -> Int не пустое

Не пустое конечно, поэтому и «условно».

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

>>Это вообще шедевр!!!!

Гейм девелопер без взаимодействия с пользователями?

Крута!!!!

Браво!!!! Бис!!!

Убейся. Откуда такие как вы вообще беретесь?

В хаскеле принято разделять функции для непосредственной работы с внешним миром от логики обработки всего этого. Кстати, это очень неплохо и для любого другого языка программирования.

Ага. Неплохо. Вот только проверямость чего остается? Если все данные интересные для пользователя из процедуры доказательства исключается?

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

Какая каша, что такое?

Функция - это отображение. Разве нет?

Отображение - это декартово произведение двух множеств. Нет?

Что функция с пустым множеством определения не имеет значений согласенно это не имеет отношения к делу. Хотел лишь показать, что точка зрения оппонента неверна: область определения не пуста, а вообще отсутствует, и следовательно рассматриваемый объект не является функцией.

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

В принципе форт --- это такой еврейский лисп. В лиспе программа записывается слева-направо

 ( команда аргумент1 аргумент2 аргумент3 ) 

а в форте справа-налево

 аргумент3 аргумент2 аргумент1 команда 
ugoday ★★★★★
()
Ответ на: комментарий от unC0Rr

> функция - это отображение. Отображение - это декартово произведение двух множеств, т.е. (A, B), в хаскеле записывается как A -> B.

Может ты хотел сказать, что функция — это отношение (то есть множество пар (a, b) ∊ (X, Y)) такое, что по первому элементу эти пары уникальны?

Кстати, отсюда следует, что у функции с пустой областью определения пустая область значений. И никаких функций, возвращающих 5, таким образом не сделать.

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

> Отображение - это декартово произведение двух множеств. Нет?

Хм, нет. Может, подмножество декартового произведения?

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

> Ага, и у типа () есть аж целых два значения, а не одно. Это () и undefined.

Которое тем более можно игнорировать. Главное, что значения этого типа никакой информации не несут.

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

> Отображение - это декартово произведение двух множеств. Нет?

Нет. Точнее это будет верно только для одноэлементных множеств.

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

> Браво, сколько появилось амбициозных нахватавшихся верхушек клоунов. Сначала sanuda, теперь ты.

Ну так укажи мне, в чем мне стоит углубить знания! Сделай доброе дело, облегчи рефлексию.

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

Может быть... 10 лет уж прошло, мог и попутать немного

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

>Ага. Неплохо. Вот только проверямость чего остается? Если все данные интересные для пользователя из процедуры доказательства исключается?

Собственно все самое интересное и остается.

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

>Не пустое конечно, поэтому и «условно».

Да просто ну никак функция с пустым множеством определения на роль константы претендовать не может. Вообще.

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

Не пустое конечно, поэтому и «условно».

Да просто ну никак функция с пустым множеством определения на роль константы претендовать не может. Вообще.

С этим я целиком согласен. Я уже приводил ссылку, где этот вопрос разобран по косточкам.

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

>Ага. Неплохо. Вот только проверямость чего остается? Если все данные интересные для пользователя из процедуры доказательства исключается?

что за бред... ты хоть хеллов_ворд на хацкеле написал?

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

>> Луговский, помнится, для embed очень Forth пропагандировал, как метаязык. Кстати, он ещё и функциональный.

с каких это пор он функциональный?

Ну не чистый функчиональный, конечно же. Грамотнее было бы сказать «имеет некоторые свойста ФЯП»:

: square dup * ; \ композиция функций в бесточечном стиле

: 3+ 3 + ; \ partial application

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

Гейм девелопер без взаимодействия с пользователями?

Что тебя так радует?

Или ты считаешь, что рейтрейсинг, например, делается путём зажигания лампочки?

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

Функция - это отображение. Разве нет?

Да.

Отображение - это декартово произведение двух множеств. Нет?

Нет, конечно.

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

>Нет, конечно.

Но ведь подмножество декартова произведения? (хаскеллисты 2 страницы спорят о том, что такое функция)

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

Ну не чистый функчиональный, конечно же. Грамотнее было бы сказать «имеет некоторые свойста ФЯП»:

Я фигею, дорогая редакция.. Тоже самое на ассемблере:

square    proc
          mov cx,ax
          mul cx
          ret
sqare     endp

addthree  proc
          add ax,3
          ret
addthree  endp

Ассемблер «имеет некоторые свойста ФЯП»?

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

Вот еще winduzyatnik сюда переедет, тогда еще +4 страницы про IO будет.

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

Это потому, чтот ты вообще ни одного проекта не видел. Машинные коды нигде не используются в качестве языка, на котором пишет программист. В отличии от Ц/Ц++, который применяется для этой цели практически в каждом проекте.

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

>> Гейм девелопер без взаимодействия с пользователями?

Что тебя так радует?

Или ты считаешь, что рейтрейсинг, например, делается путём зажигания лампочки?

А взаимодействие с видеокартой, это уже не ввод-вывод?

Тяжко пытаться отделить данные от функциональности, когда вункциональность требует взаимодействия с объектами.

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

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

> Тоже самое на ассемблере:

Мимо кассы. Я приводил пимер композиции функций и частичной аппликации. Где это у тебя?

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

> > Функция - это отображения одного множества на другое. Элементы из множества, называемого «область определения», отображаются на элементы из множества, называемого «область значения». Значение входного множества называется аргументом.

> Вот есть константа 5. Что и куда она отображает, чудо?

Эээ... пустое множество на множество с единственным элементом 5?

Эээ, ты слово *элементы* в этом контексте:

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

«Нечаянно» пропустил?

Может напишешь, какие элементы принадлежат пустому множеству, а? Мне сильно интересно.

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

> Ну так укажи мне, в чем мне стоит углубить знания! Сделай доброе дело, облегчи рефлексию.

Разобраться с IO

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

Анонимный брат может поинтересоваться
логической интрепретацией алгебры множеств.
И тогда он перестанет задавать дурацкие вопросы.

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

А взаимодействие с видеокартой, это уже не ввод-вывод?

Вообще-то, мало кто из геймдева пишет самостоятельно взаимодействие с видеокартой. Есть такие вещи как DirectX, например.

А тот код, который вообще знает о существовании DirectX – это и есть то самое промилле. Тысячная часть от.

Тяжко пытаться отделить данные от функциональности

Это ещё что за бред?

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

>> А взаимодействие с видеокартой, это уже не ввод-вывод?

Вообще-то, мало кто из геймдева пишет самостоятельно взаимодействие с видеокартой. Есть такие вещи как DirectX, например.

А тот код, который вообще знает о существовании DirectX – это и есть то самое промилле. Тысячная часть от.

Хм... Насчет DirectX не вкурсе, но вот OpenGL щупал. Так что можешь мне тут байки не травить. Допускаю, что в DirectX работы меньше, но не на несколько порядков же.

Тяжко пытаться отделить данные от функциональности

Это ещё что за бред?

Мда... Что тебе ответить? Что программа взаимодействует с объектами реального мира (человеком, видеокартой, сервером) постоянно, а не в виде аргументов. Так я понял, что бесполезно уже....

То что для нормального взаимодействия с объектами реального мира удобнее всего использовать объектные модели взаимодействия - бесполезно ибо функцианальщики все объекты реального мира с их огромным множеством возможных внутренних состояний в параметры запихнут, причем сами объекты отдельно, а состояния их отдельно. Иначе чистоты функциональности не получиться.

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

> И тогда он перестанет задавать дурацкие вопросы.

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

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

Допускаю, что в DirectX работы меньше, но не на несколько порядков же.

Ты, вообще, представляешь, СКОЛЬКО кода в современной игре?

Что программа взаимодействует с объектами реального мира (человеком, видеокартой, сервером) постоянно, а не в виде аргументов.

Ну да. А кто говорил про «аргументы»?

Только код, отвечающий за это взаимодействие, незаметен на фоне всего остального.

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

Это брехня. Объектный подход - один из самых неудобных, какие есть вообще.

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

может ты подскажешь, как функция может быть определенна только на пустом множестве

Я подскажу. Может. Ровно одна (для каждой области значений).

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

А вот это и мне очень интересно.

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

>> Допускаю, что в DirectX работы меньше, но не на несколько порядков же.

Ты, вообще, представляешь, СКОЛЬКО кода в современной игре?

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

Что программа взаимодействует с объектами реального мира (человеком, видеокартой, сервером) постоянно, а не в виде аргументов.

Ну да. А кто говорил про «аргументы»?

Только код, отвечающий за это взаимодействие, незаметен на фоне всего остального.

Незаметен, может быть, но его размазанность по процессу убивает возможность верифицировать все. Только части. Но части сами по себе имеют очень мало смысла.

?> То что для нормального взаимодействия с объектами реального мира удобнее всего использовать объектные модели взаимодействия

Это брехня. Объектный подход - один из самых неудобных, какие есть вообще.

Это лишь твое мнение. И оно отличается от реальности. Для управления объектом способным иметь множество состояний не проявляющихся внешне объектная модель, хочешь или нет, будет построена. Вопрос лишь в том насколько это будет удобно делать.

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

>Тебе ответили с первого раза.

Мне ответил только ты, но довольно бессодержательно. Хотя это риторический вопрос был.

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

> Для управления объектом способным иметь множество состояний не проявляющихся внешне объектная модель, хочешь или нет, будет построена.

Чисто из интереса: зачем делать состояния, которые не проявляются?

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

>> Для управления объектом способным иметь множество состояний не проявляющихся внешне объектная модель, хочешь или нет, будет построена.

Чисто из интереса: зачем делать состояния, которые не проявляются?

Они не проявляются пока мотора не сгорит... или что-нибудь в этом роде.

Типа команды открыть заслонку, при отсутствии датчика положения заслонки.

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

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

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

Вы, регистраты, все на одно лицо. Хотя после того, как ты поставил эту уродскую морду себе на аватар тебя стало легче узнать. Думаю, я спутал тебя, какого-то виндузятника и ещё кого-то.

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

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

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