2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:11 
Заслуженный участник


27/04/09
28128
Даже если бы и был неограниченный, всё равно до функций нельзя дойти автоматически.

nondeterminism в сообщении #1017388 писал(а):
Я лезу в спеки только за тем чего не знаю.
А как вы тогда определяете, знаете или нет? Тестированием всех возможных случаев?

-- Вт май 19, 2015 21:12:52 --

nondeterminism в сообщении #1017398 писал(а):
Странно. goto более фундаментален, чем циклы, циклы -- частный случай
Фундаментален в смысле вашего мнения или чего-то более объективного? А то просто неясно из контекста.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:14 


07/05/15

110
arseniiv в сообщении #1017402 писал(а):
А как вы тогда определяете, знаете или нет?


Интуитивно. Встречный вопрос. А как Вы определяете, что правильно поняли то, что написано в спеках? А так же то, что там нет ошибки?

-- 19.05.2015, 20:15 --

arseniiv в сообщении #1017402 писал(а):
Фундаментален в смысле вашего мнения или чего-то более объективного? А то просто неясно из контекста.


В том смысле, что с помощью него имплементируются циклы, но не наоборот.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:17 
Заслуженный участник
Аватара пользователя


06/10/08
6422

(Оффтоп)

nondeterminism в сообщении #1017398 писал(а):
Странно. goto более фундаментален, чем циклы, циклы -- частный случай, а у них все наоборот. Значит это не примитивный ЯП, а язык с блекджеком:)
Целью создания языка было написание компилятора, влезающего в 256 байт. Подозреваю, что из-за этого вместо двух конструкций if и goto (для которого требуется как-то еще определять метки) был выбран один цикл while.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:21 
Заслуженный участник


27/04/09
28128
nondeterminism в сообщении #1017404 писал(а):
А так же то, что там нет ошибки?
Ну как бы спецификация языка — это то место, которое по определению является определением этого языка.

nondeterminism в сообщении #1017404 писал(а):
А как Вы определяете, что правильно поняли то, что написано в спеках?
Если вы думаете, что вероятность неправильного понимания спецификации, которые обычно пишутся грамотно, не меньше вероятности неправильного понимания с помощью одной только непонятно на каком опыте (ведь ограничений не наложено) основанной интуиции, то зря. Иначе бы спецификации не писали, а писали бы только tutorial.

nondeterminism в сообщении #1017404 писал(а):
В том смысле, что с помощью него имплементируются циклы, но не наоборот.
Вы ориентируетесь на императивные машины. А зачем? Потом, для дизайну языка совершенно побоку, как там что имплементируется (приходится повторяться). Может, вообще одна реализация такая, а другая — эдакая.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:24 


07/05/15

110
arseniiv в сообщении #1017409 писал(а):
Ну как бы спецификация языка — это то место, которое по определению является определением этого языка.


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

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 19:30 
Заслуженный участник


27/04/09
28128
nondeterminism в сообщении #1017411 писал(а):
То же самое, что утверждать, что свод законов -- это определение поведения граждан.
Демагогия. Реализация языка пишется так, чтобы удовлетворять спецификации. И даже в неудобных случаях, когда это не так, спецификация подгоняется под реализацию, а вот граждан со сводами законов так никто друг к другу не сводит.

Конечно, реализация может делать не только то, что не запрещено, и не делать не только то, что не разрешено в спецификации, но про наследование вы и сами знаете.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение19.05.2015, 22:18 
Супермодератор
Аватара пользователя


20/11/12
5728
 !  nondeterminism заблокирован как злостный клон.
Посты будут снесены.

 !  indeterm заблокирован как злостный клон.
Посты снесены.

 !  sogoodweather заблокирован как злостный клон.
Посты снесены.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение24.05.2015, 22:08 


05/09/12
2587
Как раз на днях написал на Haskell интерпретатор собственного диалекта Lisp, со строгим порядком вычислений, вызовом по значению, мутабельным состоянием объектов и переменных, вводом-выводом в любом месте кода, функциями/замыканиями как объектами первого класса, макросами и т.п. Единственно что - пока лень и отложенные вычисления не реализовал. После этого забавно читать эту тему :)

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение25.05.2015, 22:56 
Заслуженный участник


27/04/09
28128
Отложенные, если имеются в виду delay и force, довольно просто можно реализовать (раз есть макросы, целиком на языке, а так можно было бы только force): [1], [2]. В [2] описывается кэшированная версия, когда повторные force не выполняют вычисление повторно.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение27.05.2015, 06:50 


05/09/12
2587
arseniiv спасибо за ссылку, реализовал простую некэшированную версию.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение20.12.2015, 13:33 


20/12/15

14
_Ivana в сообщении #1019174 писал(а):
Как раз на днях написал на Haskell

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

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение20.12.2015, 14:12 


11/12/14
893
goodbigbeer в сообщении #1083863 писал(а):
Вот когда реализуете лисп-интерпретатор, не выходя за рамки чистой подстановочной модели, скажем, на чистом лямбда-исчислении, тогда действительно будет смешно.


Эмм... А в что вас смущает в подстановочной модели? Я за лямбда-исчисление сказать не могу, не разбираюсь в нём, но не вижу никаких принципиальных проблем в том чтобы написать на лиспе же чистую функцию (executeLispProgram programText ), и которую потом можно будет для конкретного programText просто на бумажке расписывая подстановки функций на их тела выписать результат. Не вижу тут ничего смешного.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение20.12.2015, 14:21 


20/12/15

14
aa_dav
Грубо говоря, невозможно в модели без состояния реализовать(или выразить) модель с состоянием.
aa_dav в сообщении #1083875 писал(а):
не вижу никаких принципиальных проблем в том чтобы написать на лиспе же чистую функцию

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

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение20.12.2015, 14:24 


11/12/14
893
goodbigbeer в сообщении #1083885 писал(а):
Грубо говоря, невозможно в модели без состояния реализовать(или выразить) модель с состоянием.


Нет, вы неправы. Еще раз перечитайте эту часть:
Цитата:
написать на лиспе же чистую функцию (executeLispProgram programText ), и которую потом можно будет для конкретного programText просто на бумажке расписывая подстановки функций на их тела выписать результат

Здесь входной аргумент и есть проносимое состояние. И раскрытие подстановки происходит не единожды, а для КАЖДОЙ комбинации аргументов.
В самом начале темы есть пример как с помощью сквозного аргумента эмулировать состояние.

 Профиль  
                  
 
 Re: Слабость функциональной парадигмы
Сообщение20.12.2015, 14:34 


20/12/15

14
aa_dav
Я вас не совсем понимаю.
Пусть будет так (псевдолисп):
Код:
(define programmText (quote  (+ x  x)))
(define x 1)
(execute programmText) ; --> 2
(set x 2)
(execute programmText) ; --> 4

Что тут по-вашему чистое? execute, или что? И при чем тут это вообще?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 106 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: dgwuqtj


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group