LINUX.ORG.RU

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

 ,


0

3

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

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



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

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

>еще ни одного проекта в embeddedd где-бы не использовался C

Черт побери! Я тоже не встречал ни одного проекта где бы не использовались машинные коды! Вот что ни возьми — используются. Да здравствуют машинные коды! Все остальное — полное г... по-определению!

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

То есть по факту - AOP это перебор в смысле необходимых телодвижений для достижения достаточно простых целей. Ну кроме around(* *.*) для трейса.

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

>Нет.

Дальше чем трейс - да.

Оборачиваемый код типа теоретически не знает про оборачивающий - на практике оборачивающий весь основательно заточен на оборачиваемый.

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

> > писать под веб на хаскеле — фанбоизм?

Я этого никогда не говорил.

Да ладно?

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

А кто это писал?

ключевые слова: «хаскеля ради».

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

Для любого инструмента есть свои рамки применения. Восхваление инструмента без понимания этих рамок — да, фанбоизм.

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

А все эти напальцевые рассуждения в треде с макросистемами и кросс^Wсквозным функционалом — не более, чем попытки притащить шаблоны из одного языка в другой, чтобы меньше думать.

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

>Черт побери! Я тоже не встречал ни одного проекта где бы не использовались машинные коды!

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

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

>setcursor(pointer) {

ensureaccess(user) {

Более чем логично при закладке в начальные требования :)
А попробуйте-ка в практически написанном достаточно (большом, форм на 200-400) проекте те же setcursor в нужных местах расставить? :)

AOP - король трейсов.

... и другого явно сквозного функционала. Особенно, в период сопровождения проекта.

не понял.

Это неважно на деле :)

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

Если ближе к практике - ни один проект по цифровой обработке сигналов не обходится без ассемблера или С - какой тут толк от твоего автоматического кода ? ОС - тем более, весь бутстрап, работа с платформо-зависимыми регистрами, кешем, обработкой прерываний, работа с MMU - все ассемблер - никто этот код не генерирует на высокоуровневых языках.

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

>на практике оборачивающий весь основательно заточен на оборачиваемый.
Не совсем так - я бы сказал, что оборачивающий код заточен под среду, в которой оборачиваемый код находится. Под тот самый, упомянутый выше «контекст», например.

Дальше чем трейс - да.

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

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

> работа с MMU - все ассемблер - никто этот код не генерирует на высокоуровневых языках.

Генерация кода для работы с MMU на Си пойдёт за контр-пример (генерация кода на высокоуровных языках)?

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

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

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

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

>Генерация кода для работы с MMU на Си пойдёт за контр-пример (генерация кода на высокоуровных языках)?

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

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

Че там дальше с ними было уже не важно. Не о том разговор был.

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

Это где в РФ делают такие желески ?

Понятия не имею. Я даже не знаю, где их в мире делают.

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

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

Пиши код на двух регистрах, кто не даёт?

Много регистров было на Итаниумах. А на «современных процессорах» их даже не 32, как на дешёвом MIPS.

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

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

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

Луговской? Этот клиент биоректора совего имени всегда функциональным был. :)))

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

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

Пиши код на двух регистрах, кто не даёт?

это была опечатка. хотел сказать: «много инструкций»

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

> Нет конечно - давно ли С стал высокоуровневым языком ?

Давно, больше 20 лет назад.

это тот же ассемблер, только платформо-независимый но с натяжкой - можно конечно использовать интристики и говорить что пишешь на С, но это чистой воды фикция.

Брр, сколько ошибок. Вот тебе пример, где нет »интристик«, но есть кодогенарация на Си:

http://lxr.free-electrons.com/source/arch/mips/mm/tlbex.c#L1755

ky-san
()
Ответ на: комментарий от ky-san

>Давно, больше 20 лет назад.

20 лет назад и ассемблер был высокоуровневым по сравнению с перфокартами

Вот тебе пример, где нет »интристик«, но есть кодогенарация на Си:


а вот тебе пример где никакой кодогенерации нет:

find arch/mips/ -name *.S

что же так авторы кода - не осилили крутую кодогенерацию.

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

> 20 лет назад и ассемблер был высокоуровневым по сравнению с перфокартами

Перфокарты? В 91-м году? Да и на ассемблере уже массово лет как 15-20 не писали.

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

>Перфокарты? В 91-м году?

Ах да - тогда уже перфоленты были в моде :) еще помню в то время попадались дискеты такой величины что в сумку хрен засунешь и память на ферритовых кольцах.

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

> 20 лет назад и ассемблер был высокоуровневым по сравнению с перфокартами

facepalm. У тебя в голове каша. Перфокарты не имееют отношение к языку, как «флешка» не имеет отншония к хранимым данным.

что же так авторы кода - не осилили крутую кодогенерацию.

Ты о чём/это к чему? Я показал тебе конкретный контрпример и показал, что твои рассуждения не стоят выеденного яйца. А ты ещё упорствуешь в своих заблуждениях.

ky-san
()
Ответ на: комментарий от ky-san

>Я показал тебе конкретный контрпример и показал,

Ты показал какое-то фуфло на дефайнах и я так и не понял что ты пытаешься мне доказать - что кодогенерация на С возможна ? ну так я и без тебя это знаю.

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

Значит, сначала ты говоришь:

> работа с MMU - все ассемблер - никто этот код не генерирует на высокоуровневых языках.

Потом ты путаешь ассемблер и Си с перфокартами, а теперь и вовсе заявляешь:

Ты показал какое-то фуфло на дефайнах и я так и не понял что ты пытаешься мне доказать - что кодогенерация на С возможна ? ну так я и без тебя это знаю.

И научись различать функции от макросов. Это «фуфло» - генерации кода для работы с TLB MMU на мипсах.

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

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

Примерно так.

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

Ты делал? А я из собственной практики говорю, что на данный момент в хаскеллевских фреймворках сырых мест более чем достаточно. Попытки не признавать этот факт — примой показатель взгляда на мир в розовых очках. И да, фанбоизма.

А все эти напальцевые рассуждения в треде с макросистемами и кросс^Wсквозным функционалом — не более, чем попытки притащить шаблоны из одного языка в другой, чтобы меньше думать.

Хорошо подытожил свои же слова. Молодец.

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

> По твоим меркам, если нету на языке хорошего музыкального плеера и файлового менеджера — то он не нужен?

а кто говорил про гуй и про нужность/ненужность языка? был приведен список - я высказал свое мнение по поводу его содержимого

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

> То есть если я пишу веб на хацкеле ради поставленной начальством задачи

Прими мои соболезнования.)))

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

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

программа не является функцией, не так ли?

Какая прелесть!

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

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

И говорим об этом с такой гордостью и такой уверенностью, что именно так и надо.

Браво!

На Бис!!!

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

>> Является. Сигнатура ее - IO ().

А IO () не является функцией (так как не содержит "->").

Ага. А пустой список - не список (так как не содержит элементов).

Короче, идите и учите мат.часть. В Haskell любое значение можно считать функцией. Т.к. функции могут быть без агрументов. А любая фунцкия - значение.

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

>>> Является. Сигнатура ее - IO ().

А IO () не является функцией (так как не содержит "->").

Ага. А пустой список - не список (так как не содержит элементов).

Пустой список — список. По определению. Функция — значение с типом a -> b. Тоже по определению.

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

Нельзя. Не могут. Идите учить матчасть.

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

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

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

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

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

Короче, идите и учите мат.часть.

Гы.

В Haskell любое значение можно считать функцией.

В смысле «не запрещено» - да (у нас и вера в бога не запрещена). В любом другом смысле - нет. Идите и учите матчасть.

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

> Короче, идите и учите мат.часть. В Haskell любое значение можно считать функцией. Т.к. функции могут быть без агрументов. А любая фунцкия - значение.

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

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

Вот есть константа 5. Что и куда она отображает, чудо? Как функция может быть без аргумента?

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

C#, функция, тип, константа. Что общего между этими словами? Ты не перепутал ссылку для ответа?

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

> Вот есть константа 5. Что и куда она отображает, чудо? Как функция может быть без аргумента?

Ну например, ее можно рассматривать, как функцию, что отображает пустое множество на саму себя.

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

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

Это Вы про себя? Самокритично.

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

>> Вот есть константа 5. Что и куда она отображает, чудо? Как функция может быть без аргумента?

Ну например, ее можно рассматривать, как функцию, что отображает пустое множество на саму себя.

Прекрасно. Функция, отображающая пустое множество на функцию, отображающую пустое множество на функцию…

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

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

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

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

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

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

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

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

Который является-таки значением? Или очередной «функцией» с бесконечным типом?

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

лисп-мойшины были похоронены злыми жидоэкономистами

Сам же всё и сказал.

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

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

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

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

Полная каша в голове.

И функция - не произведение, и произведение сроду не обозначалось (A, B), и функция с пустой областью определения значений не имеет... В сад.

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

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

Который является-таки значением? Или очередной «функцией» с бесконечным типом?

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

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

> произведение сроду не обозначалось (A, B)

Ну (A, B) как раз и является произведением типов A и B. Другое дело, что к функциям это никакого отношения не имеет.

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

>Короче, идите и учите мат.часть. В Haskell любое значение можно считать функцией. Т.к. функции могут быть без агрументов. А любая фунцкия - значение.

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

x=[1..10] — x не функция нифига

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

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

Который является-таки значением? Или очередной «функцией» с бесконечным типом?

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

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

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

>Ну например, ее можно рассматривать, как функцию, что отображает пустое множество на саму себя.

бугага

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