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, Супермодераторы



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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