Clojure impresses

Dec 10, 2012 14:58

Нашему Clojure-проекту исполнилось полгода, из них последние три месяца его используют заказчики. Пора подводить промежуточные итоги ( Read more... )

наглядный пример, девелопмент, инструментарий, clojure, fp, и такое было

Leave a comment

ext_1405098 December 10 2012, 12:01:27 UTC
"""Макросы - простые и понятные пушистые зверьки, позволяющие кое-где срезать углы или отложить вычисления."""

Отложить вычисления можно через замыкания. Бывают какие-нибудь полезные применения макросов, не сводящиеся к замыканиям?

Reply

ext_1405098 December 10 2012, 16:17:45 UTC
Я не понимаю вопроса. Потрудитесь объяснить подробней.

Reply

thedeemon December 10 2012, 16:34:04 UTC
let x = case b "" of Book n _ -> n
х будет равен 2.

Reply

vinslivins December 10 2012, 16:42:21 UTC
ыы. спасибо. блин. хаскель учить, учить, учить, учить, учить, учить, и учить.

Reply

kashnikov December 10 2012, 18:12:15 UTC
О непервоклассности макросов, например, для Scheme Вам возможно будет интересно посмотреть: http://okmij.org/ftp/Scheme/macros.html#ck-macros

Возможно такой

Небольшой кусочек из http://okmij.org/ftp/Scheme/CK.scm

; Composable syntax-rules macros via the CK abstract machine ( ... )

Reply

thesz December 10 2012, 19:16:19 UTC
Могу ли я взять и написать ((permute a b) c) и получить результат, как (permute a b c)? Если могу, то это первоклассные объекты. Если нет, то нет.

Reply

geekyfox December 10 2012, 19:42:50 UTC
насколько я путаю лиспы,

(permute a b c) - это (в хаскелевской нотации) не обязательно
permute a b c, а возможно ещё и синтаксический сахар вокруг
permute [a,b,c]

ответ на вопрос о том, как вот в это воткнуть карринг, по моему очевиден.

Reply

thesz December 10 2012, 19:53:26 UTC
Здесь не карринг воткнуть. А сделать первоклассный объект. И ответ мне здесь совсем не очевиден.

Reply

geekyfox December 10 2012, 20:31:35 UTC
А, понял вопрос. В Common Lisp - нельзя.

Reply

kashnikov December 10 2012, 20:29:20 UTC
> Могу ли я взять и написать ((permute a b) c) и получить результат, как (permute a b c)?

Нет, так написать Вы не можете.

Reply

kashnikov December 10 2012, 20:42:52 UTC
Я правильно понимаю, что Вы хотите первоклассность в классическом смысле? Из Вашего примера не совсем понятно, но близко к тому.

Reply

thesz December 10 2012, 20:59:23 UTC
Да. Чем больше первоклассных объектов, тем проще их комбинировать.

Reply

kashnikov December 10 2012, 21:23:57 UTC
Если я правильно Вас понял, то такие макросы должны будут раскрываться во время исполнения. Какой тогда в них смысл я не совсем понимаю. ;-)

Reply

thesz December 10 2012, 21:41:37 UTC
Вот-вот. Смысла в макросах не так, чтобы уж много.

Reply

voidex December 10 2012, 15:32:28 UTC
Когда происходит раскрытие функции x = fact 10?

Reply


Leave a comment

Up