[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]

Ответ в тред 29402. [Назад]
 [ Скрыть форму ]
Имя
Не поднимать тред 
Тема
Сообщение
Капча Капча
Пароль
Файл
Вернуться к
  • Публикация сообщения означает согласие с условиями предоставления сервиса
  • В сообщениях можно использовать разметку wakabamark
  • На данной доске отображаются исходные имена файлов!
  • Разрешенные типы файлов: text, video, code, image, pdf, flash, vector, music, archive
  • Тред перестает подниматься после 500 сообщений.
  • Треды с числом ответов более 100 не могут быть удалены.
  • Старые треды перемещаются в архив после 40 страницы.

No.29402 Ответ
Файл: serial_experiments_lain-14377.jpg
Jpg, 405.57 KB, 1600×1200 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
serial_experiments_lain-14377.jpg
Был удивлён, пролистав за десяток страниц, и не найдя здесь подобного трэда.
Решил начать учить язык богов. С чего начать - книги и мануалы, теория и практика (желательно на русском), в чём лучше писать (под винду и под никсы), советы, распространённые ошибки, всё сюда. Лисп-нить иди.
>> No.29403 Ответ
Файл: 1360269558729.jpg
Jpg, 195.79 KB, 1365×2048
Ваши настройки цензуры запрещают этот файл.
r-15
>>29402
Совсем ньюфаг штоле? SICP и вперед. Подойдет любой интерпретарор
>> No.29404 Ответ
>>29403
> Совсем ньюфаг штоле?
Типа того.
> SICP
Загуглил, лекции обязательны, или для первого знакомства и книги хватит?
А если мне нужен компилятор?
>> No.29405 Ответ
>>29404
Ты прочитай две главы, а там и компилятор сам найдешь.
Книги достаточно для человека. который в силах освоить эту книгу.
платиновые ответы пр
>> No.29406 Ответ
>>29405
> платиновые ответы пр
> пр
харкач там --->
>> No.29428 Ответ
>>29403
> Подойдет любой интерпретарор
По-моему, не совсем так. Если не ошибаюсь, там использовались функции для работы со строками, которых не было в R*RS (но могу и путать).
>>29404
> Загуглил, лекции обязательны, или для первого знакомства и книги хватит?
Книга и так по лекциям же, а лекции - по книге.
>> No.29450 Ответ
>>29428
> Книга и так по лекциям же, а лекции - по книге
А появились они из варпа.
Петросян.жпг
>> No.29460 Ответ
Файл: игры-сталкер-песочница-266643.jpeg
Jpeg, 93.92 KB, 604×574 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
игры-сталкер-песочница-266643.jpeg
>>29403
Есть соус этой няши. Хочу затвор передернуть на нее.
>> No.29468 Ответ
>>29460
Есть рядом с пикчей кнопочка с буквой g.
http://ww.inboobs.net/erotic/snezhnaja_koroleva:1031.html
>> No.29485 Ответ
Файл: iphone-30.jpg
Jpg, 31.41 KB, 422×506 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
iphone-30.jpg
>>29468
спасибо, мужик.
>> No.29492 Ответ
>>29402
Под LISP ты подразумеваешь common lisp?
> книги
onlisp, но он еще не до конца переведен
перевод pcl - http://lisper.ru/pcl/
> в чём лучше писать
emacs + slime
>> No.29503 Ответ
О, лиспотред, я спрошу тогда.

Racket
Имеется ли возможность объявить в блоке let функцию без лямбды? Я вроде перестал в скобках путаться, но вот не получается. Приведу пример, как получается и как хотелось.

Как получается.
(define (fact n)
   (let( [ tail-fact (λ (n accum)
            (if (= n 1)
              accum
              (tail-fact (- n 1) (* n accum))))])
   (tail-fact n 1)))

Как хотелось бы:
(define (fact n)
   (let ([ (tail-fact n accum) (if (= n 1)
                 accum
                (tail-fact (- n 1) (* n accum)))])
   (tail-fact n 1)))
>> No.29504 Ответ
>>29503
объяви макрос чтобы (yoba (id ...) body ...) заменялось на (id (lambda (...) body ...)
>> No.29574 Ответ
Файл: 226764_210769788946495_3745522_n.jpg
Jpg, 67.94 KB, 478×720 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
226764_210769788946495_3745522_n.jpg
>>29503
Ракет - это же схема? Попробуй это.
(let tail-fact (n accum) (if (= n 1) accum (tail-fact (- n 1) (* n accum))))
Если интересно именно массово в теле лета - делай свои макросы.
>> No.29575 Ответ
>>29574
> Ракет — это же схема?
ракет это переделанная схемка.
>> No.29592 Ответ
Файл: ygohh1uctay.jpg
Jpg, 52.30 KB, 604×568 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
ygohh1uctay.jpg
И попробуй дефайн в дефайн вкладывать, в схемках может работать как локальный дефайн.
>> No.29605 Ответ
>>29503>>29592
Так и работает, код стайл по рэкету говорит предпочитать локальный дефайн лету. Единственное, что ты на дефайне не сделаешь замыкание.
>> No.29607 Ответ
>>29605
почему не сделаешь?
>> No.29609 Ответ
>>29607
А как?
>> No.29610 Ответ
>>29609
Как всегда - (define (yoba x) (define y x) y)
>> No.29611 Ответ
>>29610
Я имею в виду типа такого:
`(define yoba-let
   (let ([n 0])
(lambda ()
  (set! n (add1 n))
  n)))`
Наивное переписывание дает
`(define yoba-def
   (begin
(define n 0)
(lambda ()
  (set! n (add1 n))
  n)))
define: not allowed in an expression context in: (define n 0)`
>> No.29618 Ответ
>> No.29627 Ответ
>>29618
хакир. Использовал лямбду вместо лет. Да, это отвечает условию, пусть и мудренно. Окей, буду помнить. Но вот так короче выглядит:
(define yoba-def2
   (let ()
(define n 0)
(lambda ()
  (set! n (+ 1 n))
  n)))
>> No.29648 Ответ
Файл: tumblr_lisp1bajuC1qh22huo1_500.jpg
Jpg, 57.99 KB, 500×545 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
tumblr_lisp1bajuC1qh22huo1_500.jpg
Спрошу тут. Есть ли какой-нибудь стандартный макрос with для схемы/ракеты типа
`
(struct MyStruct (yoba))

(define x (MyStruct "eto ti?"))

(with MyStruct x
   (display yoba))
`
?
>> No.29649 Ответ
>>29648
пиши MyStruct-yoba x и не выпендривайся
>> No.29651 Ответ
>>29649
не лисп вей
>> No.29652 Ответ
>>29651
лол, эт почему ещё?
>> No.29653 Ответ
>>29652
Лисп вей - это написать макрос для себя, как только захотелось.
В принципе, то чего я прошу - это тоже не лисп вей, т.к. я хочу стандартного (иф поссибль) решения. Но придется писать самому. Потренируюсь заодно.
>> No.29654 Ответ
>>29653
Чем тебе MyStruct-yoba x не стандартное решение?
>> No.29658 Ответ
>>29654
стандартное, но многословное
>> No.29659 Ответ
Файл: DSC_9279.jpg
Jpg, 37.23 KB, 595×397 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
DSC_9279.jpg
>>29648
Это невозможно. Для common lisp/elisp существует progv и set. В схемке/кложуре их нет.
Суть такая: названия переменных не должны влиять на код программы. Если переименовать одну переменную во всех местах, то ничего не должно поменяться.

(with MyStruct x (display yoba)) -- тут йоба биндится, как временная переменная, но если поменять майстракт, то поменяется йоба, поменяется код. Недетерменистичность зашкаливает.

К слову, это ведь не так уж и нужно. Чтобы в clojure достать из мапа значение по ключу, нужно написать (:yoba x), либо (get x :yoba).
>> No.29660 Ответ
>>29659
Зачем мне менять майстракт внутри with? Я же не долбоеб вроде. Я хочу что-то вроде common lisp-ового with-slots а не progv. Насчет кложурового способа, для схемы тоже нужно писать макрос, который объвляет структуры и переименовывает аксессоры.
>> No.29662 Ответ
>>29658
> стандартное, но многословное
тогда тебе стоит попробовать ситму http://sym.at.ua/load/symta_v0_2/1-1-0-2
>> No.29665 Ответ
>>29662
Нет, спасибо.
>> No.29668 Ответ
Файл: 136249710245385.jpg
Jpg, 27.08 KB, 324×480 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
136249710245385.jpg
>>29660
Не внутри with.
Смотри, ты хочешь именно создать временные переменные, не обьявляя их напрямую. Откуда взялась yoba? Если взять другой стракт, там не будет йобы.
Ты можешь сделать аналог кложуровского doto или ->.
> (-> x :yoba) экспандится в (:yoba x)
"eto ti?"
> (-> x (print :yoba)) экспандится в (print x :yoba)
~~~совсем не то, что хотели~~~
> для схемы тоже нужно писать макрос
Не особо понимаю, почему тоже. Лично я на кложуре страктами вообще не страдаю: они не нужны, когда есть мапы. Тем более, что реализованы стракты через мапы, либо хуже(но больше жава-взаимодействия).
>> No.29670 Ответ
Файл: 136249864718359.jpg
Jpg, 26.50 KB, 323×479 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
136249864718359.jpg
>>29660
> with-slots
А это реально.
Что-то такое, например. Не проверял на работоспособность.
(defmacro with-sluts (sluts party &rest NICE-BODY)
   `(let ,(map (lambda(slut) (list slut (string->symbol (append (symbol->string party) "-" (symbol->string slut))))) sluts)
   ,@NICE-BODY))
>> No.29672 Ответ
>>29668
я же указываю прямо название структуры (with MyStruct x), соответственно могу (наверное) узнать названия полей MyStruct, т.е. получить список (list MyStruct-yoba и т.д.) и для каждого из них сделать let ((yoba Mystruct-yoba) и т.д)
> тоже
имелось ввиду, что в схеме придется писать макрос, а with - тоже макрос, т.е. в схеме в любом случае придется писать макрос.

Очень многие библиотеки (например, better-monads) определяют структуры и к ним макросы with- (например, with-monad), идея состоит в том, чтобы написать один макрос with, и явно указывать с каким типом структур мы работаем.
>> No.29676 Ответ
Файл: 2013-03-06-01.06.23.jpg
Jpg, 435.60 KB, 2048×1536 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
2013-03-06-01.06.23.jpg
>>29402

Тред полон ньюфагов. Пик строго релейтед.
>> No.29677 Ответ
Файл: 136251953147532.jpg
Jpg, 31.92 KB, 320×479 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
136251953147532.jpg
>>29672
> соответственно могу (наверное) узнать названия полей MyStruct
Wrong. В переменной макроса лежит имя переменной, по которой доступен стракт, а не сам стракт. Можешь сделать eval, но вероятность соснуть просто грандиозна. Макросы раскрываются при компиляции, а не во время выполнения. Потому я такие штуки в elisp крутил кекеке.
Ты мог бы не евалить, а просто подставить переменную в нужное место(как это и нужно делать в макросах). Но в let тебе подставлять некуда. (let <вот-тут-ничего-не-евалится> body)
В прогв можно, так как там евалится. Но прогва(и set) нет в схеме именно по той причине, которую я описал. И которую в SICP в первом разделе описали. Изменение названий переменных где-угодно в программе не должно влиять на результат. Изменение yoba на yoba1 повлияет на результат. Это плохая практика, хоть именно так почему-то и хочется сделать. Но реально нужно взять и не полениться писать те вещи, которые мы хотим. А хотим (get struct value &optional value-if-no-value-in-struct).
> in which the appropriate values, bind, plus, zero, return, and current-monad are bound to the values specified in monad.
Забили все имена ручками в let?
>> No.29686 Ответ
Файл: Siouxsie+1982.jpg
Jpg, 44.55 KB, 347×428 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Siouxsie+1982.jpg
Каких-то старых готок ты постишь, лишпофаг. Помоложе нету?
>> No.29700 Ответ
>>29677
Я сделал по-другому, определил макрос (struct/with struct-name fields) который определяет структуру и макрос (with-name x body).
http://paste.lisp.org/display/135858
Если кто знает, как сделать читабельнее, жду советов ИТТ.
>> No.29706 Ответ
Файл: 364b81ddf308.jpg
Jpg, 52.03 KB, 418×640 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
364b81ddf308.jpg
>>29686
> Помоложе нету?
> Siouxsie+1982.jpg
Да и Ману пощу же. Он няша.
> как сделать читабельнее
(setq lisp-indent-offset standard-indent)
Рикомендую. Любой оффсет = статический оффсет.
>> No.31133 Ответ
Файл: dis.png
Png, 77.48 KB, 184×206 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
dis.png
Куда-то тредик уплыл.
Дело вот в чем - листал я листинги программ на clojure, и там заметил такие вещи: при помощи swap! меняются значения Атомов. Т.е. получаются такие себе переменные. Разве это ФП?
В смысле, объект имеет постоянное состояние, с которым что-то делают. Разве такое состояние должно быть? (навеяно http://habrahabr.ru/post/161885/, http://jng.imagine27.com/index.php/2009-09-12-122605_pong_in_clojure.html)
понимаю, что пост получился сумбурный, но я пока в этом плохо ориентируюсь
>> No.31152 Ответ
Файл: brodom1g-vm.jpg
Jpg, 48.26 KB, 480×480 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
brodom1g-vm.jpg
>>31133
Это не ФП. Иммутабельность кложура распространяется на все переменные(в т.ч., переменные, хранящие атомы, рефы, так как доступ идёт через deref). Atoms, refs, agents - эти все штуки умеют изменяться.
Зачем они нужны?
Многопоточность. Агенты многопоточны by design. Атомы нужны, когда другие треды не будут изменять значения атома(только смотреть). Рефы нужны, если другие треды желают изменять значения(потому все изменения синхронизируются).
Да, атомы можно использовать, как мутабельные переменные, и писать императивно. Не вижу в этом особого смысла, правда, учитывая богатство хай-ордер функций, ленивостей, функций над коллекциями. http://clojure.org/cheatsheet
>> No.31153 Ответ
Файл: 1132359668_WishYouWereHere.jpg
Jpg, 38.71 KB, 500×481 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1132359668_WishYouWereHere.jpg
>>31152
А как тогда, допустим, организовать этот понг правильно? Вчера ломал голову функциями от времени, но голова сломалась, а решения так и не нашел.

Даже не понг, а вот, к примеру тетрис. Фигура имеет координаты, которые меняются в зависимости от пользователя.

Как это организовать?

Или это того не стоит, и данная часть и должна быть императивной?
>> No.31154 Ответ
Файл: pwfnshiftgq.jpg
Jpg, 38.18 KB, 500×356 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
pwfnshiftgq.jpg
>>31153
Можно как-то так, например:
http://www.everfall.com/paste/id.php?z0qzfyg4nzo2
>> No.31155 Ответ
>>31154
И правда, после просмотра я понял что что-то подобное как-раз и крутилось на уме.
Но все таки, тот пример понга, что я привел, получается он плохой?
>> No.31156 Ответ
Файл: j1kt_hxpers.jpg
Jpg, 75.73 KB, 500×505 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
j1kt_hxpers.jpg
>>31155
Он 2009 года (кложур достаточно новый язык всё-таки). Я не могу ничего сказать плохого про человека, который умеет наимпортить библиотек из жавы, и прямо из кложура ими орудовать. Но как по мне, это очень не лиспово и слишком лоулевельно. Это как ебать байты в ООП-языках. Для лисповости, пилят интерфейсы над жава-библиотеками, скрывая весь хоррор. Хороший пример - няшный seesaw, который сделаный из ужасного swing'a.
https://github.com/daveray/seesaw
https://gist.github.com/daveray/1441520
>> No.31157 Ответ
Файл: 1132359668_WishYouWereHere.jpg
Jpg, 38.71 KB, 500×481 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1132359668_WishYouWereHere.jpg
>>31156
Но я спрашивал совсем не об этом, а о том, что там с помощью atom и swap! делаются как бы переменные.
>> No.31158 Ответ
>>31157 -> >>31152
> Это не ФП.
>> No.31168 Ответ
Файл: dv-vvjaogeq.jpg
Jpg, 49.95 KB, 500×494 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
dv-vvjaogeq.jpg
>>31157
И как-бы да. Переменные внутри жава-классов тоже не иммутабельные. Можно даже мутабельный класс прямо внутри кложур создать. Потому я и вспомнил о его прямом использовании жава классов: присмотрись, там мутабельные присвоения евриве.
>> No.33100 Ответ
Нашёл время, решил заняться, начал scip, и застопроился в самом начале - emacs, в котором и собирался практиковаться, отказывается исполнять один из первых же примеров из книги.

На
(define size 2)
size
вместо предпологаемой двоечки выдаёт окно с ошибками:
Debugger entered--Lisp error: (void-variable size)
  eval(size)
  eval-last-sexp-1(nil)
  eval-last-sexp(nil)
  call-interactively(eval-last-sexp nil nil)
Щито за дела? Чяднт?
Сейчас на mint 15.
>> No.33105 Ответ
>>33100
Схема и емакс лисп - разные языки. ruwiki://Emacs_Lisp
Если хочешь писать на схеме именно в емаксе, то тебе нужен соответствующий режим.
Но проще, я думаю, будет воспользоваться dr racket.
>> No.33106 Ответ
>>33105
Настолько разные, что последний даже не может в define?
Во всяком случае, я пишу в файле .scm, там автоматически режим схемы должен включаться же, и вроде и включается - [(Scheme)] в строке состояния (или как там она называется) у меня написано. Я всё ещё не могу понять в чём проблема.
>> No.33107 Ответ
>>33106
А код ты исполняешь как?
>> No.33108 Ответ
>>33106
Да, в CL нужно defvar и defun
>> No.33110 Ответ
>>33106
Ты eval-region используешь что ли?
Нужно scheme-send-region (C-c C-r) или scheme-send-definition (C-c C-e), например
>> No.33111 Ответ
>>33107
C-x C-e
>>33110
> scheme-send-region (C-c C-r) или scheme-send-definition (C-c C-e)
Это включение режима или интерпритация?
Я с имаксом раньше не работал, только для лиспа его и поставил, и вообще в никсах не очень.
>> No.33112 Ответ
>>33111
> Это включение режима или интерпритация?
Интерпретация. Только это в quack. scheme-mode, который из коробки, не умеет.
Можешь с помощью M-x package-install его поставить
>> No.33115 Ответ
>>33112
> M-x package-install
Не работает.
А почему из коробки не может, что именно ему не нравится?
>> No.33116 Ответ
>>33115
Из коробки там ЕМНИП только подсветка синтаксиса
>> No.33119 Ответ
>>33106
> Настолько разные, что последний даже не может в define?
Там defun же
>> No.33120 Ответ
>>33112
Так как его установить-то?
>>33119
Это для описания функций же, define для присвоения значений переменным, не?
>> No.33122 Ответ
>>33120
> Так как его установить-то?
http://alexott.net/ru/writings/emacs-devenv/EmacsScheme.html#sec5
> Это для описания функций же, define для присвоения значений переменным, не?
Ты про диалекты лиспа знаешь?
>> No.33123 Ответ
>>33119
В его случае defvar/defparameter/defconst
>> No.33124 Ответ
>>33122
Читал, ничего не понял - куда копировать quack.el "чтобы имакс смог его найти", (пихал в ~/.emacs.d) где писать (require 'quack) (пробовал написать в самом имаксе и C-x C-e - выводит окно с ошибками), гуглил как устанавливать пакеты в имакс вообще, и этот в частности, но ни черта не нашёл. Стал бы я сюда писать не попробовав найти всё самому?
> Ты про диалекты лиспа знаешь?
В общих чертах.
>> No.33127 Ответ
>>33124
Я закинул quack.el в ~/.emacs.d
и в .emacs написал
(add-to-list 'load-path "~/.emacs.d")
(require 'quack)
далее открываешь имакс M-x run-scheme
>> No.33131 Ответ
>>33127
> .emacs
Где это?
>> No.33134 Ответ
>>33133
> M-x package-list-packages
[No match] Where is your PROFIT now?
>> No.33135 Ответ
>>33127
> далее открываешь имакс M-x run-scheme
> No process current buffer. Set scheme-buffer' or execute run-scheme'
>> No.33142 Ответ
>>33135
Открой список буфферов в имаксе
>> No.33144 Ответ
>>33142
И?
>> No.33146 Ответ
Файл: KeineIN.png
Png, 178.49 KB, 256×512 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
KeineIN.png
>>33120
> define для присвоения значений переменным, не?
Буууум.
Дефайн для создания переменных. Переприсваивать с дефайна - не правильно. Правильно с помощью set! в схемках, setq(или setf, или set) в elisp.
defvar
defconst
defun
Ну и let, конечно же.

>>33131
user-emacs-directory переменная (через C-h v), либо C-x C-f и зайди в ~/

>>33134
Установи package. http://www.emacswiki.org/emacs/ELPA

>>33135
Это странно, оно говорит, чтобы ты запустил схемку. Как будто одна не запустилась. У тебя в консольке scheme запускает схему? Если нет, поменяй значение переменной scheme-program-name.

Мимопроходил
>> No.33147 Ответ
>>33146
> Буууум.
Я бы знал мат часть лучше, если бы у меня был доступ к её изучению, но я по прежнему не могу запустить интерпретатор.
> либо C-x C-f и зайди в ~/
Да, я уже нагуглил, что он должна быть в домашнем каталоге пользователя, так как у меня его не было, я его создал, и прописал там >>33127 я всё правильно сделал?
> Установи package.
Мне бы хоть с этим для начала закончить.
> У тебя в консольке scheme запускает схему?
Не пони, в какой именно консольке? Проверить Scheme в терминале?

Первый раз после запуска run-scheme выводит Run Scheme (default "mzscheme"): и требует что-то ввести, но я не понимаю что, а уже при последующих, если просто ткнуть ввод, происходит >>33135
>> No.33148 Ответ
>>33146
> Установи package.
А еще лучше обновить емакс.
>> No.33150 Ответ
>>33148
А еще лучше поставить drracket и не заморачиваться пока с емаксом.
>> No.33151 Ответ
>>33148
Обновлён.
>>33150
Поставил, полёт нормальный.
> пока
Но я всё ещё жду помощи с настройкой имакса.
>> No.33152 Ответ
>>33151
> Обновлён
package.el с 24й версии из коробки.
У тебя, по-видимому, 23я
Тогда последуй совету этого анона >>33127
>>33131
> Где это?
~/.emacs
>> No.33153 Ответ
>>33152
> У тебя, по-видимому, 23я
Именно так-с.
-> >>33135>>33147
>> No.33158 Ответ
>>33153
> Первый раз после запуска run-scheme выводит Run Scheme (default "mzscheme"): и требует что-то ввести, но я не понимаю что, а уже при последующих, если просто ткнуть ввод, происходит >>33135
Так mzscheme ты пробовал запустить или нет?
>> No.33160 Ответ
>>33158
> Run Scheme (default "mzscheme"): и требует что-то ввести, но я не понимаю что
Просто нажми enter и откроется буффер с repl
>> No.33161 Ответ
>>33158
Что это, и как это работает?
>>33160
-> >>33147
> Первый раз после запуска run-scheme выводит Run Scheme (default "mzscheme"): и требует что-то ввести, но я не понимаю что, а уже при последующих, если просто ткнуть ввод, происходит >>33135
>> No.33162 Ответ
>>33161
mzscheme - интерпретатор.
Он у тебя в терминале-то хоть запускается?
>> No.33163 Ответ
>>33162
Забил в терминал, пишет - мзским не уствновлен, установите рэкет by sudo apt-get install racket.
Рэкет в котором развлекаюсь сейчас устанавливал запустив скачанный с офф сайта скрипт для Убунты. И кажется я запихнул егго в домашний каталог.
>> No.33164 Ответ
>>33163
Зачем тебе пердолить имакс? У тебя есть же есть дрракет, что еще нужно?
>> No.33166 Ответ
>>33164
> Зачем тебе пердолить имакс?
Потому что могу?
>> No.33168 Ответ
Файл: 60996270_Social.jpg
Jpg, 13.60 KB, 567×286 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
60996270_Social.jpg
>>33166
Имакс заменяет "lambda" на λ
>> No.33183 Ответ
Файл: 12921487196616.jpg
Jpg, 13.60 KB, 228×251 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
12921487196616.jpg
>>33163
C-u M-x run-scheme
Тебе предложат выбрать схемку. Эта схемка должна нормально запускаться из терминала(она-же консолька >>33146), предлагая консольный repl(read eval print loop, цикл чтения-вывода).

В буфферах с scheme-mode можно будет делать C-x C-e, отправляющий sexp после курсора в буффер с реплом. C-x C-r - выделенный регион, C-M-x - окружающий sexp.
>> No.36567 Ответ
Доброкодер, помоги. Не пойму на что slime при запуске ругается.
Алсо, почему из emacs буфер не работает через хоткеи? Только когда в меню копировать выбираешь.

(progn (load "/usr/share/common-lisp/source/slime/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.7055"))

This is SBCL 1.1.1.0.debian, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
*
debugger invoked on a SB-INT:SIMPLE-FILE-ERROR in thread
#<THREAD "main thread" RUNNING {10029C0D23}>:
   Couldn't load "/usr/share/common-lisp/source/slime/swank-loader.lisp": file
   does not exist.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
   0: [ABORT] Exit debugger, returning to top level.

(LOAD
   "/usr/share/common-lisp/source/slime/swank-loader.lisp"
   :VERBOSE
   T
   :PRINT
   NIL
   :IF-DOES-NOT-EXIST
   T
   :EXTERNAL-FORMAT
   :DEFAULT)
0]
>> No.36569 Ответ
>>36567
sbcl из консольки-то запускается? Если да, то возможно нужна какая-то либа со стороны sbcl, потому что он пишет, что он запускается и не находит "/usr/share/common-lisp/source/slime/swank-loader.lisp"
И чем вас только на КоммонЛисп тянет. Ставь clojure и пиши функционально и круто. Либы под него буквально на моих глазах развивались за последние пару лет.
>> No.36570 Ответ
>>36569
> sbcl из консольки-то запускается?
Запускается. Все либы вроде есть. Но насчёт установки emacs и slime из реп меня гложат сомнения.
> И чем вас только на КоммонЛисп тянет
ХОТЕТ
>> No.36571 Ответ
Странно. Пришлось поставить slime из реп и из сорцов, только так работает. Какие то косяки с путями. А вот копировать код из emacs принципиально не хочет, где настраиваются хоткеи?
>> No.36572 Ответ
>>36571
Я сейчас без слайма живу, но попробуй так:
Поставь курсор после закрытой скобки. Нажми C-x C-e. Или C-c C-e. Что-то из этого должно работать.
Ну или пробуй M-x slime-что-то-там-похожее-на-евал
> Странно. Пришлось поставить slime из реп и из сорцов, только так работает. Какие то косяки с путями.
Классика CL. Когда начнешь ставить другие либы - будет только хуже.
Мои первые впечатления от clojure после CL были такими: я ставлю, и оно, ВНЕЗАПНО, работает! А с leiningen'ом вообще все просто заебись, просто строчку одну пишешь в project.clj с названием либы и ее версией, и оно скачивает.
> ХОТЕТ
Просто ты понимаешь, что сейчас есть вещи не хуже(тоже лисп, блджад), но современнее? Там всякие ленивые списки искаробки, генерализированные коллекции, и прочие ништяки. В коммоне у тебя даже нормальных потоков не будет, потому что они не прописаны в стандарте и в каждом трансляторе лиспа свои. В кложуре у тебя будут треды, future/deref, система транзакций, promise/deliver. Ну лично я не вижу ни одной здравой причины до сих пор считать CL стандартным лиспом, когда есть настолько хорошая альтернатива.
>> No.36573 Ответ
Файл: 137701119673700.jpg
Jpg, 41.66 KB, 720×480 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
137701119673700.jpg
>>36572
> Просто ты понимаешь, что сейчас есть вещи не хуже(тоже лисп, блджад), но современнее?
Понимаю. Просто я хочу попробовать Common Lisp. Я не собираюсь профессионально что-то писать на нём. Хотя кто знает, как получится. Просто ХОТЕТ.
>> No.36620 Ответ
Борщ, лиспач. Такой простой вопрос — как в CL работать с http? Например получить главную Доброчана. Гугл посылает на ЛОР, где анонимус невнятно вещает что в стандартной библиотеке нету ничего подобного.
>> No.36621 Ответ
Файл: 137692122308185.jpg
Jpg, 18.82 KB, 426×350 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
137692122308185.jpg
>>36620
Да, в стандартной библиотеке этого нет. Может это подойдёт. http://www.cliki.net/cl-html-parse
>> No.36622 Ответ
>>36620
enwiki://CL-HTTP

Неправильный у тебя гугл. Вот только всякие парсилки и работы с текстом в elisp удобнее.
>> No.36623 Ответ
Файл: 1389207136865.jpg
Jpg, 51.21 KB, 800×669 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1389207136865.jpg
>>36621
>>36622
Спасибо, братюни.
>> No.36624 Ответ
Файл: Снимок-экрана-12.01.2014-13:16:57.png
Png, 33.40 KB, 1021×319 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Снимок-экрана-12.01.2014-13:16:57.png
Нагуглил еще cl-mechanize, спасибо еще раз.
>> No.36647 Ответ
Файл: GF.jpg
Jpg, 226.69 KB, 1252×636 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
GF.jpg
Доброанон, объясни ньюфагу что такое лямбда и зачем она нужна.

к:рукой печальной
>> No.36649 Ответ
>>36647
Представь, что ты обьявляешь функцию "foo". По имени "foo" будет лежать НЕЧТО, что принимает аргументы, делает обсчеты, выдает результат. Даже если убрать имя, то это вполне логическая сущность. Так вот лямбда - это обьявление функции без имени. Эту функцию можно присобачить к имени, или передать, или запустить прямо на месте. Т.е., (defn foo [arg] (+ 1 arg)) тоже самое, что и (def foo (fn [arg] (+ 1 arg))).
Для чего нужно? Ну вот например есть функция, которая принимает функцию. Допустим, коллбек для другого треда, запускающийся после какого-то события, не принимающий аргументов и ничего не возвращающий. Вместо того, чтобы писать функцию на один случай, ты делаешь (fn-that-use-callback (fn [] some-actions)). Ну или вот есть список чисел, нужно получить список квадратов этих чисел. (map (fn[item] (* item item)) [1 2 3 4]) вернет [1 4 9 16].
Можно использовать лямбду для того, чтобы создавать локальные переменные. ((fn [local-var another-var] (* local-var another-var)) 3 4). Но для этого в лиспах есть let. т.е.: (let [local-var 3 another-var 4] (* local-var another-var)).
Можно использовать лямбду для того, чтобы сделать связывание локальной переменной. (def closure-fn (let [var 5] (fn [] var))). (closure-fn) вернет 5, как значение var, а само var по этому имени тут не доступно. Инкапсуляция, desu~.

Ну, это конечно если ты про лямбды в программировании. Есть еще лямбда-исчисление, которое придумали в тех-же годах, как и машину Тюринга, и с тем-же предназначением. Там все сложнее, и к практическому программированию оно не относится.
>> No.36653 Ответ
>>36649
Не совсем то, что просил, но спасибо.
>> No.36655 Ответ
>>36647
Кратко перескажу >>36649: лямбда является синтаксическим сахаром для кратких функций; можно передавать её в функции, которым нужны коллбеки. Например, так:
#!/usr/bin/python3

somefun(666, lambda: pass, 777)
somefunr(666, lambda: return, 777)
iamnotavariable = lambda z: z**z    # z is a parameter
iamnotavariable(3)    # 27
>>36649
Я ненавижу читать мануалы, написанные подобными неняшами, графоманами и формалофагами. Как вы умудряетесь писать так непонятно?
>> No.36660 Ответ
>>36655
> iamnotavariable
> > storing lambda
> > not a variable
so sad.
>> No.36661 Ответ
Файл: 13630445512243.png
Png, 89.91 KB, 357×366 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
13630445512243.png
>>36655
> лямбда является синтаксическим сахаром
> лямбда является синтаксическим сахаром
> лямбда является синтаксическим сахаром
>> No.36663 Ответ
>>36655
> iamnotavariable
Вообще-то в питоне это именно что обычная переменная. Впрочем, лямбды для этого не нужны, можно и
def func1()
    return

somevar = func1
>> No.36668 Ответ
>>36660
Строго говоря, даже функциональные языки не могут считатся чисто функциональными, ведь там тоже есть типы и часто некое подобие определения типов.

Представил ученика, спрашивающего какой тип данных хранится в корне уравнения, и не написано ли там "хуй".
>> No.36669 Ответ
>>36668
Функциональные языки не обязаны не иметь типов. Нужны просто первокласные функции и средства для того, чтобы писать функционально чисто было удобно.

>>36663
Ну а для того, чтобы не засорять неймспейсы...
>> No.36672 Ответ
>>36669
> Функциональные языки не обязаны не иметь типов.
Я это и имел ввиду, намекая на то что формальное соответствие термину и употребляемое соответствие термину - не одно и то же; иногда удобнее пользоваться разными рамками.
>> No.36681 Ответ
>>36655

Да уж он-то всяко лучше тебя. Он хоть криво, но объяснил про замыкания, а ты даже не заикнулся.
>> No.36702 Ответ
Я ещё не дочитал до работы с пакетами, но хочу прогать уже сейчас. В CL есть менеджер пакетов, как pip в питоне?
>> No.36704 Ответ
>> No.36707 Ответ
>>36704
Спасибо :3

Лиспер.ру лучше лисп.ру?
>> No.36709 Ответ
>>36707
На первом информация поновее.
>> No.36810 Ответ
Братишки, (никто не видел|не писал себе) библиотеку для работы с вк апи? Поделитесь, пожалуйста.
>> No.36867 Ответ
>>36810

API, библиотеки, ввод-вывод, вконтакте… экая дурнопахнущая куча баззвордов! Да всё это ненужно. Ты не понимаешь, Лисп не предназначен для таких „задач“. Он работает по-другому.
>> No.36870 Ответ
>>29402
За сколько часов реально задрочить Лисп по книгам — Грэм, pcl, sicp — для scheme, учитывая при том, что знание другого простого высокоуровневого серверного языка мешает пониманию и сосредоточению? Цель не познать дзен и вернуться на прежний язык, а задрочить лисп и остаться навсегда на нем. Не фанбой, кодингом не зарабатываю. Хочу исключительно для саморазвития.
>> No.36871 Ответ
Файл: 1390336663889.png
Png, 1.43 KB, 300×20 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1390336663889.png
>>36867
> ставит кавычки-лапки вместо ёлочек
Вот что может написать такой человек? Правильно, только бред. Алсо, капча намекает.
>> No.36873 Ответ
>>36870
> остаться навсегда на нем.
Не рекомендую CL или Схемку оставлять, там всё старое и не работает. Т.е., у тебя не будет нормальных библиотек. Даже гуи замутить - огромная проблема. Потому схемки/кл - это поиграться-поучиться, а на clojure, например, можно писать, потому что там все либы жавы + целая куча новых нативных, и хорошая система пакетов, которая использует maven. Потому не нужно даже ничего качать, ты просто пишешь зависимость от пакета и версии, а оно все рекурсивно выкачивает с правильными версиями. Ну и gui через seesaw охуенное.
>> No.36874 Ответ
Файл: Без-имени.jpg
Jpg, 47.98 KB, 391×308 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Без-имени.jpg
Пример из книжки не работает почему то. Я совсем не разбираюсь, только начал http://www.gigamonkeys.com/book/practical-a-simple-database.html
использую имакс sbcl slime
>> No.36875 Ответ
>>36874

У тебя Ctrl+C с ошибками копирует? Почему with-standard-io-syntax здесь превратился в with-standart-io-syntax?
>> No.36876 Ответ
>>36875
невнимателен. спасибо
>> No.36877 Ответ
>>36867
Скорее всего ты дело говоришь. Просто не хотел смешивать с питоном, у которого есть батарейка для вкашки. Алсо, нагуглилось вот http://lisper.ru/apps/format/206 но там нет документации для ньюфагов.
>> No.37473 Ответ
>>36873
Анон, пожалуйста подскажи с чего начать. Только с чего начать, дальше сам разберусь :3
>> No.37474 Ответ
>>37473
С установки mit-scheme и скачивания sicp :3
>> No.37475 Ответ
>>37473
Я уж собирался всё подсказать, а если только с чего начать, то даже и не знаю.
>> No.37476 Ответ
>>37475
Тогда давай всё, лишним не будет.
>>37474
Лучше читать sicp на русском или на английском? В английский могу.
Спасибо :3
>> No.37480 Ответ
>>37476
Если можешь, то лучше на ангельском.
>> No.37482 Ответ
Файл: 139050007974577.jpg
Jpg, 58.00 KB, 621×437 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
139050007974577.jpg
>>37480
Я бы посоветовал http://lisper.ru/pcl/pcl.pdf. Это если ты хочешь Common Lisp, а не Scheme.
>> No.37483 Ответ
>>37482
Но Scheme проще CL, а SICP даст больше.
>> No.37484 Ответ
>> No.37597 Ответ
* (ql:quickload :drakma) To load "drakma":    Load 1 ASDF system:
`drakma`
; Loading "drakma" ... debugger invoked on a SIMPLE-ERROR in thread #<THREAD "main thread" RUNNING {AB1F729}>:    While computing the class precedence list of the class named CL+SSL::BIO-METHOD-TCLASS. The class named CFFI::TRANSLATABLE-FOREIGN-TYPE is a forward referenced class. The class named CFFI::TRANSLATABLE-FOREIGN-TYPE is a direct superclass of the class named CL+SSL::BIO-METHOD-TCLASS.
`Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.`
restarts (invokable by number or by possibly-abbreviated name):    0: [TRY-RECOMPILING] Recompile bio and try loading it again    1: [RETRY ] Retry loading FASL for #<CL-SOURCE-FILE "cl+ssl" "bio">.    2: [ACCEPT ] Continue, treating
                   `loading FASL for #<CL-SOURCE-FILE "cl+ssl" "bio"> as`
                   `having been successful.`
   3: [ABORT ] Give up on "drakma"    4: Exit debugger, returning to top level.
`(SB-PCL::CPL-ERROR`
 `#<STANDARD-CLASS BIO-METHOD-TCLASS>`
 `"The class ~A is a forward referenced class.~@`
                      `The class ~A is ~A."`
 `"named CFFI::TRANSLATABLE-FOREIGN-TYPE"`
 `"named CFFI::TRANSLATABLE-FOREIGN-TYPE"`
 `"a direct superclass of the class named CL+SSL::BIO-METHOD-TCLASS")`
`0]` 
>> No.37761 Ответ
SICP достаточно сложная хрень на самом деле, хоть и наверно полезная. Пробовал писать на кложуре (не знаю, насколько тру лисп это), мне она показалась проще всяких питонов и руби, можно сесть и херачить практически сразу, вообще простой язык. Так что может не заморачиваться по теориям и кукареканьям, а начать тупо писать что-то; думаю всякие коммон лиспы не сложнее, если их хочется.
>> No.37763 Ответ
>>37761
> не заморачиваться по теориям и кукареканьям, а начать тупо писать что-то; думаю всякие коммон лиспы не сложнее, если их хочется.
Именно. Когда хочешь научиться плавать или ездить на велосипеде, то нужно плавать или ездить не велосипеде. Уже потом можно изучить закон Архимеда или устройство велосипеда.
>> No.37808 Ответ
>>37761
Кложура збс. Учитывая, что там немутабельные переменные, то язык очень толсто намекает на функциональный стиль. Да и лисп же. Да и новый лисп же, с ленивостями, тредами, системой транзакций, агентами, персистентными массивами искаропки, диспатчем массивов и списков. Короче, я вообще не знаю, зачем ебать трупы, если есть кложур.
>> No.37809 Ответ
>>37808
> Короче, я вообще не знаю, зачем ебать трупы, если есть haskell.
>> No.37810 Ответ
>>37809
Хаскелл не лисп. Убогий странный синтаксис, в отличии от кода-как-данных. Да и статикопараши не нужны.
>> No.37814 Ответ
>>37810
Clojure - это вообще последнее, на что стоит смотреть. Рич Хикки - мерзкий говнюк. Само его существование является оскорблением наследия Лиспа, гения МакКарти и всех тех трудов, которые Лисперы вкладывали в дело за последние годы. Тот факт, что Clojure работает на JVM - это мелочь по сравнению с прочими смертными грехами, каковых настолько много (и которые так меня бесят), что я здесь даже половины не перечислю.
Ну что, начнем со сваливания в кучу функций и значений? В нормальном Лиспе головные формы распознаются моментально, потому что они, блядь, идут в начале списка. Когда с этим облажались в Scheme, было уже довольно хреново; еще хуже стало, когда на те же грабли наступил Пол «Поглядите-я-даже-не-знаю-что-такое-интерактивная-разработка» Грэм. И что, никто ничему не научился на их ошибках? Ах, ну да, в Scheme попытались это вылечить так называемыми «гигиеническими макросами», которые были хотя бы юзабельны, несмотря на убогость. В Clojure даже того нет - это просто смешно.
Но это еще не самое плохое. В Clojure слишком много синтаксиса! Похоже, что Хикки в качестве модели выбирал Haskell. Я не припомню другого языка, в котором было бы столько синтаксиса. В виде Кложуры мы получили самый синтаксически тяжеловесный лисп-подобный язык на сегодняшний день. («Лисп-подобный» - потому что, за исключением самых поверхностных моментов, на самом деле в Кложуре нет ничего от Лиспа.) Самые обычные вещи, которые тривиально реализуются в терминах головных форм, в Clojure превращаются в мешанину из скобок и разделителей, даже в элементарнейших случаях. [foo] вместо (list foo), {:foo bar} вместо (dict :foo bar)...
Лямбда. Это слово пишется как «lambda», а не «fn». Не так уж и сложно набрать, правда, мистер Хикки? Что, руку вывихнул, пока дрочил на собственное дутое ЧСВ? Надеюсь, руки у тебя отсохнут и отвалятся, а сам ты сдохнешь. Потому что ты угробил Лисп для огромного количества людей. Ты даже не можешь напечатать «lambda»? Серьезно? Не верю.
И да, к слову об ABCL. Он уже есть и прекрасно работает на JVM. Нет никаких причин плодить еще один диалект.
>> No.37816 Ответ
>>37814
> Самые обычные вещи, которые тривиально реализуются в терминах головных форм, в Clojure превращаются в мешанину из скобок и разделителей, даже в элементарнейших случаях. [foo] вместо (list foo), {:foo bar} вместо (dict :foo bar)...
Когда я изобретал свой Лисп (просто так, от нечего делать) я тоже это заметил. Список можно задать как (' a b c d) или как (. a b c d) или ещё с помощью какого-нибудь мелкого символа - и тогда функции не будут смешаны со значениями. Этот символ, кавычка или точка - имя функции, которая вернёт список. "Всё функции".

Но я не так категоричен в отношении Clojure. Чем больше языков, тем лучше.
>> No.37818 Ответ
>>37810
> Да и статикопараши не нужны.
Нет, ты снова всё перепутал. Не нужны твои динамические скриптопараши. За Хаскеллем будущее, но тебе, макаке, этого понять не дано.
>> No.37827 Ответ
>>37761
> сложная хрень
Только для умственно неполноценных. Прорешать большую часть заданий из сицпа под силу даже девятикласснику.
>> No.37910 Ответ
Привет анон, я слегка не по адресу, и ньюфаг тред не тут, однако попробую.
Подскажи, как мне наиболее корректным образом с точки зрения языка написать программу, которая бы выводила пирамидку - как трифорс, но заданной высоты, на Clojure.

У меня получилось как-то так:
'(defn triforce
   [height]
(defn get-chars
  [number ch-seq]
  (dotimes [n number] (print ch-seq)))
(loop [i 0]
  (when (< i height)
    (get-chars (- height i) "\u00A0" )(get-chars (+ i 1) "\u25B2\u00A0")(println)
    (recur (inc i)))))'
>> No.37926 Ответ
>>37910
Использовать рекурсию вместо цикла, конечно же!
>> No.37932 Ответ
>>37926
> рекурсию
> clojure
>> No.37937 Ответ
>>37932
Невероятное красноречие.
> Clojure is a functional programming language. It provides the tools to avoid mutable state, provides functions as first-class objects, and emphasizes recursive iteration instead of side-effect based looping.
http://clojure.org/functional_programming
>> No.38223 Ответ
Господа лисперы, ответьте, пожалуйста, на два вопроса.
1. Правда ли, что код на лиспе перед выполнением транслируется в Си?
2. Как я могу сохранить буфер с определениями функций в связке Slime+Emacs+REPL при перезапуске лисп-бокса?
>> No.38224 Ответ
>>37937
Ну и толку от этой рекурсии без TCO?
>> No.38226 Ответ
>>38223
> код на лиспе перед выполнением транслируется в Си
Лиспу лет больше, чем С. Сам то как думаешь?
>> No.38227 Ответ
>>38226
Лисп за это время совсем не изменился?
>> No.38228 Ответ
Файл: 1c094f9fc3db0150b537df5c9bddecfa.png
Png, 145.20 KB, 700×700 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1c094f9fc3db0150b537df5c9bddecfa.png
>>37814
> и всех тех трудов, которые Лисперы вкладывали в дело за последние годы
То есть, никого не оскорбляет.
> Тот факт, что Clojure работает на JVM
- это хорошо, потому что открывает доступ к огромному спектру библиотек.
> Ну что, начнем со сваливания в кучу функций и значений?
LISP1 vs LISP2.
Значения-функции не нужны. LISP1 куда более натуральный, в нем нет необходимости писать ебанные funcall каждый раз, когда запускаешь функции с переменных.
> Я не припомню другого языка, в котором было бы столько синтаксиса.
О боги, синтаксис для мэпов и для векторов! Все в лисп-машину!
> [foo] вместо (list foo)
Ты даже не знаешь, о чем говоришь.
> {:foo bar} вместо (dict :foo bar)
Меньше скобкоошибок из-за того, что скобки разные. Меньше букв.
> Это слово пишется как «lambda», а не «fn». Не так уж и сложно набрать, правда, мистер Хикки?
Вообще-то сложно. Почему такая основополагающая штука так длинно пишется?

>>38224
Есть recur, trampoline и ленивые списки. Последнее наиболее удобное, пожалуй.

>>38223
> 2. Как я могу сохранить буфер с определениями функций в связке Slime+Emacs+REPL при перезапуске лисп-бокса?
C-x C-s
C-x C-w
Или что ты имеешь в виду?
> 1. Правда ли, что код на лиспе перед выполнением транслируется в Си?
Нет, он выполняется либо в трансляторе лиспа, либо в JVM (clojure).

>>37910
http://ideone.com/P1eTMF
Пиши функционально. Не думай циклами, думай цепочками преобразований. Разделяй чистые функции (такие, которые возвращают всегда одинаковый результат для одинаковых входных данных) от функций с сайд-эффектами. Присваивания, ввод/вывод - сайд-эффекты. Хинт: Когда пишешь map под сайд-эффекты - пиши doall перед ним, т.к. map в кложур ленивый.
Держи читы. http://clojure.org/cheatsheet
Бака-бака, из-за тебя я треть обеда пропустил.
>> No.38229 Ответ
>>37926
Кстати, это достаточно известное заблуждение, что в функционалке просто все циклы заменяются рекурсиями. Есть такие вещи, как map, filter, recur для работы со списками, а циклы вне списков обычно и не нужны (а когда нужны - можно сделать через iterate, который возвращает ленивый список применений функции на стартовое значение).
>> No.38230 Ответ
>>38227
Изменился. Но из нормального продукта делать уберкостыли никто бы не стал.
>> No.38231 Ответ
>>38229
> Есть такие вещи, как map, filter, recur
Эти "вещи" -- библиотечные функции высшего порядка. Рекуррентные. Я что-то не понял, что ты имел в виду.
> а циклы вне списков обычно и не нужны
А что, кроме списков никаких структур данных больше нет? Тогда бы уж про Foldable/Traversable рассказал.
>> No.38232 Ответ
>>38231
> А что, кроме списков никаких структур данных больше нет?
List, queue, hash/sorted-map, hash/sorted-set, и даже всякие жавовские массивы - это все генерализированно, как Collection. В результате функции высшего порядка принимают любую структуру-коллекцию.
> Тогда бы уж про Foldable/Traversable рассказал.
Это какая-то хаскельная типизация? Вотевар, все коллекции фолдаются и мэпятся, потому я не вижу, о чем тут говорить.
> Рекуррентные.
> > map, filter
Хех мда))
>> No.38233 Ответ
>>38232
> List, queue, hash/sorted-map, hash/sorted-set, и даже всякие жавовские массивы
Бака я бака, векторы-то забыл.
>> No.38235 Ответ
Файл: FUCK.jpg
Jpg, 33.27 KB, 343×327 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
FUCK.jpg
>>38232
> Хех мда))
> Использует )) на бордах
> В треде про лисп (!)
>> No.38236 Ответ
>>38232
> все коллекции фолдаются и мэпятся
Стрим попробуй фолднуть. Когда получится, вернёшься.
>> No.38237 Ответ
Файл: 6db.jpg
Jpg, 73.85 KB, 600×446 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
6db.jpg
>>38236
http://clojure.org/streams
> Streams
> (Note: this section describes work in progress, currently only available in SVN)
Окей, как-нибудь попробую. Когда-нибудь, когда будет смысл.

>>38235
Вау взрыв!
>> No.38238 Ответ
>>38237
Можешь уже сейчас начинать, держи:

data Stream a = a :> Stream a
>> No.38239 Ответ
>>38238
> Можешь уже сейчас начинать, держи
Я бы начал, но вот это ":>" как-то криво улыбается.

Кстати, а я правильно понимаю, что там по моему линку стримы вообще-то фолдают?
>> No.38240 Ответ
>>38239
> стримы вообще-то фолдают?
У них костыльные стримы. Я не нашёл так быстро, какой порядок редукции использует этот ваш clojure, но похоже не call-by-name. Поэтому и стримы неправильные.
>> No.38241 Ответ
>>38240
Потому что стримы call-by-need, а редукция - normal order. call-by-name кложур не практикует.
>> No.38242 Ответ
>>38228
> C-x C-s
> C-x C-w
> Или что ты имеешь в виду?
Хотелось бы, чтобы после перезапуска лисп-бокса определения функций не нужно было вбивать по новой или копипастить. Как-то чтобы они сами подцеплялись обратно. Все написанные defun'ы.
>> No.38243 Ответ
>>38242
Т.е., после перезапуска лисп-машины? Найди eval-buffer или eval-region и еваль весь файл в пару кликов.
И куда ты копипастишь? В emacs практикуют C-x e (или C-c e где-то) после закрытой скобки для евала.
>> No.38245 Ответ
>>38228
> Почему такая основополагающая штука так длинно пишется?
λ
>> No.38264 Ответ
>>38245
Такой буквы на клавиатуре нет. Вопрос не во внешнем виде, а в скорости написания.
>> No.38265 Ответ
>>38264
В ~/.XCompose прописываешь:

<Multi_key> <l> <a> : "λ" U03BB # GREEK SMALL LETTER LAMDA

и не ебешь анонам мозг.
>> No.38266 Ответ
>>38264
(define-abbrev-table 'global-abbrev-table '(("fn" "λ")))
http://ergoemacs.org/emacs/emacs_n_unicode.html
>> No.38273 Ответ
>>38266
И пользоваться юникодом вместо кода? А если я не из емакса захочу написать, а в ideone, то все?
Блджад, fn - нормальное сокращение анонимной функции. Да и лямбдами в понятии lambda calculus они никогда не были.
>> No.38281 Ответ
>>38273
> fn - нормальное сокращение анонимной функции
> sqrt - нормальное сокращение арккосинуса
>> No.38284 Ответ
>>38281
anomymous-function.
>> No.38288 Ответ
>>38284
afn /= fn
и везде это лямбдой завется
>> No.38289 Ответ
>>38288
> везде
> считает, что его CL/scheme-мирок - это всё
Небось еще считаешь, что car, cdr, progn нужно писать, потому что first, next, begin хуже?
Воспринимай это иначе. Все-таки у нас первоклассные функции, и они все создаются через fn, даже именованные, т.к. defn - обертка над fn. Потому называть его как-то afn или хуяfn нет смысла, т.к. fn - это создание функции.
>> No.38291 Ответ
>>38289
определять /= создавать? да пошли вы со своим хикки. кложура не лисп
>> No.38297 Ответ
>>38291
сам иди. кложура лисп.
>> No.38298 Ответ
>>38297
нет, не лисп
>> No.38300 Ответ
>>38298
по какому критерию?
>> No.38322 Ответ
>>38300
> Кложура — это не лисп вообще. Это Java, переведенная на S-выражения.
Пишет нам всемирно известный программист hagane.
> кложура - не лисп, а грязный панк-хипстеро-ребёнок от лиспа и джавапараши.
Вторит ему некто под номером 345597.

В англоязычных интернетах упоминается некая мантра "Clojure is not Lisp and is thus defeat!", но гугл ничего не нашёл по этому поводу.
>> No.38325 Ответ
Файл: 2014-03-25-09_53_20-Greenshot.jpg
Jpg, 368.94 KB, 1344×667 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
2014-03-25-09_53_20-Greenshot.jpg
>>38322
> Пишет нам всемирно известный программист hagane.
Ваш всемирно известный программист - аниме.
А еще он пишет с сайд-эффектами. Это потому он так не любит clojure?
https://github.com/hagane/lolscape/blob/master/quadtree.scm
> некто под номером 345597
Которого нет. >>/s/345597
> упоминается
> но гугл ничего не нашёл
Лел.
Но вообще ты не умеешь в гугл. Цитаты нужно брать в "" скобки. А так находит ОДИН лог из #clojure.
>> No.38333 Ответ
>>38325
Это номер поста из какого-то анонимного форума, можешь по фразе найти.
В каком месте я не умею в гугл? Раз такой умный, найди мне еще сайты, где встречается эта фраза, кроме лога той конфы, в котором я ее и увидел.
>> No.38339 Ответ
Файл: f6f683e88f81de47355b7e8a2fb666ca.jpg
Jpg, 263.58 KB, 955×824 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
f6f683e88f81de47355b7e8a2fb666ca.jpg
>>38333
Я не вижу конструктива. В кложур есть ленивые списки, персистентные векторы, мэпы, очереди, сеты, система транзакций, promise/future, деструктуризация в обьявлении локальных переменных. В кложур есть leiningen, который стандартизирует структуру проэктов и разрешает использовать maven, что выливается в автоматическое скачивание нужных пакетов, без половой ебли. Кложур хавает жавалибы без особых проблем, и даже позволяет всунуть жавакод в проэкт и интероперировать.
Что предлагает нам коммоно-схемкомирок вместо этого всего? Красивое написание слова "лямбда"?
>> No.38340 Ответ
>>38339
> Что предлагает нам коммоно-схемкомирок вместо этого всего?
лисп предлагает
>> No.38341 Ответ
>>38340
enwiki://Lisp_(programming_language)
Ах, ну тогда у clojure явное преимущество, потому что он тоже предлагает лисп.
>> No.38342 Ответ
>>38341
define "преимущество"
>> No.38343 Ответ
>>38342
Вот это >>38339
>> No.38346 Ответ
>>38343
Это джавапараша же.
>> No.38347 Ответ
>>38322
всемирно известный программист hagane, некто под номером 345597 и англоязычные интернеты ошибаются. скорее всего, ошибаются так же, как и ты.

кложура лисп.
>> No.38348 Ответ
>>38347
по какому критерию?
>> No.38349 Ответ
>>38348
по семантике.
>> No.38382 Ответ
А прикиньте, выучить LISP с нуля? Это реально?
>> No.38385 Ответ
>>38382
А ты хочешь учить с конца?
>> No.38386 Ответ
>>38382

Вполне. Я выучил, брат жив, зависимости никакой.
>> No.38420 Ответ
>>38382
Так говоришь, будто это сложно. Простой язык же. Держи читы.
http://clojure.org/cheatsheet
>> No.38424 Ответ
>>38420
он лисп хочет выучить
>> No.38428 Ответ
>>38424
Хорошее желание. Вот читы.
http://clojure.org/cheatsheet
>> No.38429 Ответ
>>38428
а такое же, но только на лиспе есть?
>> No.38469 Ответ
>>38429
Конечно есть. Держи.
http://clojure.org/cheatsheet
>> No.38470 Ответ
Файл: 5a30c6499e1d.jpg
Jpg, 90.94 KB, 460×458 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
5a30c6499e1d.jpg
>>38469

Clojure - это не лисп.
>> No.38471 Ответ
>>38470
Прекрати форсить это говно.
>> No.38472 Ответ
>>38471

Я? Я вообще мимо проходил.
>> No.38473 Ответ
>>38472
Ты тут весь тред мимопроходишь и безосновательно выкрикиваешь одну и ту же мантру.
>> No.38475 Ответ
>>38473
Угомонись, бугуртыш. Это я сорт оф срач затеял в прошлый раз, но не смог придумать смешной ответ про семантику и ушёл.
>> No.38476 Ответ
>>38473
выше паста с лора все поясняет
>> No.38477 Ответ
Файл: давайте без этого!.jpg
Jpg, 29.68 KB, 233×394 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
давайте без этого!.jpg
>>38476
Ты имеешь в виду того глупышку, который в схемке императивно пишет? И почему его слова нужно рассматривать всерьез? Алсо схемка - не лисп http://c2.com/cgi/wiki?IsSchemeLisp .
Англовики пишет, что кложур - лисп. В треде задавался вопрос, чем Scheme/CL лучше Clojure. В ответ лишь одна тупая мантра. Это реально надоедает и начинает попахивать форсом. Алсо, про семантику писал не я, тут еще как минимум один рандомный кложурщик.
>> No.38516 Ответ
Файл: emacs_pretty_lambda_26110.png
Png, 51.93 KB, 591×422 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
emacs_pretty_lambda_26110.png
>>38273
в 24 имаксе есть prettify-symbols-mode
http://ergoemacs.org/emacs/emacs_pretty_lambda.html
>> No.38517 Ответ
>>38516
Я знаю. Проблема не в отображении, писать дольше. Это дискареджит.
>> No.38518 Ответ
>>38517
> писать дольше
вот так. хватит хикки защищать
(define-abbrev-table 'global-abbrev-table '(("fn" "lambda"))). еще автокомплит есть
>> No.38521 Ответ
>>38518
> еще автокомплит есть
do not trall plz. Автокомплит имеет смысл с 3+ букв, иначе он тормозит среду. И табать автокомплит явно медленнее, чем писать две буквы.
> (define-abbrev-table 'global-abbrev-table '(("fn" "lambda")))
И тут ты такой пишешь переменную, в которой есть буквосочетание "fn".
>> No.38524 Ответ
>>38521
(global-set-key (kbd "C-/") "lambda") и что быстрее?
>> No.38526 Ответ
>>38524
fn, т.к. пальцы на "фыва-олдж".
>> No.38527 Ответ
>>38526
а мизинцы на "C-'" - это по скорости как одно нажатие. даже пальцем двигать не нужно. проверил
>> No.38528 Ответ
>>38527
Ты так мизинцы убьешь. C-/ - это нажатие двумя пальцами правой руки, смещаясь от стандартного расположения.
>> No.38530 Ответ
>>38528
Глупости какие. Наоборот, разовьёт, а то у большинства людей левая рука вообще убогая.
>> No.38748 Ответ
>>38223
1.Целиком и полностью зависит от конкретной имплементации.
SBCL вообще в машинный код компилит.
2.Запихни в конфиг своего лиспа ~/.sbclrc например.
>> No.38756 Ответ
>>38339
Удобно ли в кложур пердолиться в мутабельность? Сколько памяти она жрет и как долго стартует?
>> No.38762 Ответ
>>38756
Как Java.
>> No.38768 Ответ
>>38762
Почему тогда на андроиде все жалуются на долгий старт @ тормоза?
>> No.38771 Ответ
>>38768
Потому что у андроида dalvik, а не jvm. Потому что ынтырпрайз-сервер с дохуя быстрых ядер и прорвой оперативы, не китайфон. Потому что субъективно. Мой галакси с3 мини вполне меня устаивает скоростью.
>> No.38774 Ответ
>>38771
> Потому что ынтырпрайз-сервер с дохуя быстрых ядер и прорвой оперативы, не китайфон.
Т.е. жрет дофига все таки?
А что у тебя на кложуре написано для Андроида, что ты гоняешь на телефоне?
>> No.38812 Ответ
>>38756
> Удобно ли в кложур пердолиться в мутабельность?
А зачем?
Мутабельных переменных по-дефолту нет. Мутабельных структур - тоже. Есть мутабельные обертки, такие как atom(изменения не тред-сейфовые, way-to-go если хотим мутабельную структуру просто так) или ref(изменения только в транзакциях). Можно получить мутабельную структуру данных на время, а потом опять превратить в персистентную (это делается для оптимизаций).
> Сколько памяти она жрет и как долго стартует?
Стартует долго даже на пека. С памятью вроде не так уж плохо.
>> No.38822 Ответ
>>38812
Ну там производительность иногда улучшается от мутабельности, память опять же.
Спасибо за ответ.
>> No.38829 Ответ
>>38822
> Ну там производительность иногда улучшается от мутабельности
Для этого специально и сделали http://clojure.org/transients
>> No.38850 Ответ
>>38822
> память опять же
Ах, да. Я забыл сказать, что там персистентные структуры по-дефолту, и потому с памятью в чистом фп-подходе не все так плохо. Массив с одним измененным элементом использует все элементы старого массива, кроме одного. Ну и гарбаж коллектор время от времени чистит те стейты, которые больше не нужны.
>> No.40830 Ответ
Ну что ж я за неудачник такой, сисп не могу осилить. Да вообще никакую книгу до конца не осиливаю.
>> No.40848 Ответ
>>40830
Да её никто до конца ниасиливает.
>> No.41659 Ответ
Начинаю читать land of lisp. Какие-нибудь советы, пожелания?
>> No.41712 Ответ
>>41659
Скачал и пробежался глазами. Какая-то вообще невероятная укуренная книга же. + Я что-то не вижу всяких currying vs partially applied functions, soundness vs completeness - собственно всей той академеческой шняги ради которой люди учат лисп. Ну и иллюстрация на примере игро-поделки вместо комбинатора парсеров - явная какая-то замануха и разводилово же.
>> No.41923 Ответ
>>41659
Мне книга понравилась, но CL - язык на любителя.
>>41712
> академеческой шняги ради которой люди учат лисп
CL же более практический, чем нацеленный на обучение. Потому, думаю, и подход (и в дизайне языка, и в книге) больше инженерный, чем теоретический.
>> No.42652 Ответ
Бамп.
>> No.42722 Ответ
>>38812
> atom(изменения не тред-сейфовые
Как это не тред-сейфовые, ты охуел что ли? Вообще, почти все изменяемые данные в кложурце тред-сейфовые по умолчанию. А атомы не координированные, простой compare-and-swap, ты это имел в виду.
>> No.42727 Ответ
А есть ли какие-нибудь живые инциативы у лиспо-коммьюнити? Что-то ни на реддите, ни на SO никакого общего движа не видно. Вон, Дейкстрой проклятая джава родила Скалу и постепенно Apache Foundations проекты становятся реактивными & функциональными, а как же лиспы? Мне олдовые кодеры говорили, что лиспы обещали гораздо больше, чем могли дать, поэтому проиграли конкуренцию в академии\индустрии. Просто странно, штуки второй сортности типа руби, перла, го живуте себе в своих нишах, а как же лиспы? Вот это вот все не дает мне покоя.
>> No.42731 Ответ
>>42727
Эм, ну вышеупомянутый кложур живет и процветает как бы. Олсо, руби - это ж и есть лисп, только кривой. А вообще, сейчас ТИПЫ модны, и под функциональщиной зачастую подразумевают именно ТИПЫ.
>> No.42739 Ответ
>>42731
> кложур
> процветает
Кложур-то знает об этом? Не мёртв, да. Но никак уж не процветает.

Знание функциональщины у большинства ограничивается знанием map.
>> No.42752 Ответ
>>42739
> Не мёртв, да. Но никак уж не процветает.
Ну а как это еще назвать? Нишу свою занял, комьюнити достаточно большое, чтобы самоподдерживаться, light table и datomic написали, в каждой новой версии очень вкусные фичи, clojurescript очень ок... Что еще нужно?
> Знание функциональщины у большинства ограничивается знанием map.
Знание академической музыки у большинства ограничивается знанием вступления к пятой симфонии, знание кинематографа у большинства ограничивается знание лент тарантины, знание сортов пива у большинства ограничивается знанием балтики девяточки, etc... Не знаю, как тебя, а меня это не особо колышет.
>> No.43034 Ответ
Сап, лиспач.
Я тут решил перелезть с крестов на CL, и у меня осталось навязчивое желание писать всё без рекурсии. Так ли надо об этом волноваться, как в C/C++? (Там же типа, если нет корня или логарифма для оценки глубины, то и заикатся не стоит. А тут она форсится везде.)

Заодно бампану тред самого мощного языка.
>> No.43035 Ответ
>>43034
У тебя мистическое представление об рекурсии. Во-первых, есть рекурсивные алгоритмы (обход деревьев, жадные алгоритмы). Во-вторых, о рекурсии говорят обычно в связке цикл for vs рекурсия. В цикле ты используешь индекс, хотя алгоритмы, где при обходе массива тебе он нужен - их штук 20 не больше (в основном, это статистика, вычисления над потоком). И обычно чуваки пришедшие из С\С++ очень плохо могу сразу переформулировать задачу в терминах map-reduce, поэтому им требуется время освоиться с sicp идеологией, а потом они уже не волнуются и не задумываются про рекурсию. И третий поинт, это хвостовая рекурсия и возможность оптимизации, но об оптимизации думай в последнюю очередь, думай сначала про O(n), а потом про константы.

Так что просто забудь все, что ты знал, все страхи и волнения и учи лисп как первый язык.
>> No.43036 Ответ
Файл: Ucchi10.jpg
Jpg, 80.98 KB, 574×839 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
Ucchi10.jpg
>>43035
> Так что просто забудь все, что ты знал, все страхи и волнения и учи лисп как первый язык.
Visual Basic 6.0? Ну ок.
Сколько разной херни я в нём понаписал. И книжку Брауна перечитывал раз на 10.
Спасибо.
>> No.43226 Ответ
>>43034
> Сап, лиспач.
> Я тут решил перелезть с крестов на CL, и у меня осталось навязчивое желание писать всё без рекурсии. Так ли надо об этом волноваться, как в C/C++? (Там же типа, если нет корня или логарифма для оценки глубины, то и заикатся не стоит. А тут она форсится везде.)
Ты путашь с функциональщиной типа цацкелей всяких, там рекурсия - один из приёмов борьбы с самим собой написания на функционально чистом языке кода, способного вообще что-то делать. В лиспах (в CL в частности) рекурсию никто не форсит, и её применять оправдано только если алгоритм реально рекурсивный. По моему опыту - гораздо чаще используются циклы (loop, iterate), чем рекурсия.
>> No.43861 Ответ
Бамп, лисперы.

Дорогие, кто-нибудь ningle пользовал тут?
Или вообще что угодно, основанное на clack.

Для интересующихся:

Нингель: http://8arrow.org/ningle/
Кляцк: http://clacklisp.org/
>> No.43907 Ответ
>>43034
При чем тут сложность алгоритма к итеративному/рекурсивному подходу?

Суть в том, что тебе не нужна рекурсия обычно. Обычно все, что можно сделать с цикла for, можно сделать через map, reduce, some или filter. Т.е., high-order функциями. Рекурсия нужна очень редко, даже если писать функционально чисто (т.е., не используя циклы с присвоениями внутри там, где их можно не использовать).
>> No.43908 Ответ
>>43907
> Рекурсия нужна очень редко, даже если писать функционально чисто (т.е., не используя циклы с присвоениями внутри там, где их можно не использовать).
> Обычно все, что можно сделать с цикла for, можно сделать через map, reduce, some или filter.
но все функции, которые ты перечислил - рекурсивные.
или ты хочешь сказать, что не нужно писать рекурсию самому?
>> No.43909 Ответ
>>43908
Все эти функции можно реализовать императивно, циклом по аргументам. И я даже практически уверен, что для оптимизаций многие языки так и делают.

Да, мне не нужно писать рекурсию самому. Мне нужно только вписать лямбду в хай-ордер, что в разы проще и в написании, и в понимании. Как там написан сам хай-ордер - это уже вопрос третий. Главное чтобы функционально чисто, и делал то, что я ожидаю от него.
>> No.43910 Ответ
>>43907
Ты глубоко не прав. Если ты используешь алгебраические струкутуры данных, то тебе надо пилить к ним интерфес по типу монадок.
>> No.43911 Ответ
>>43910
При чем тут алгебраические структуры данных?
При чем тут интерфейсы?
>> No.43912 Ответ
>>43911
Возьмем, например, дерево. Для него тебе надо писать fold, ну а через него и остальные map-reduce. Fold - рекурсивная функция. То есть для любой задачи, где тебе надо хранить данные в своей коллекции (дерево, граф), тебе надо писать fold и, возможно, еще несколько специальных оптимизированных (non-strict) reduce функций.
>> No.43914 Ответ
> Да, мне не нужно писать рекурсию самому. Мне нужно только вписать лямбду в хай-ордер, что в разы проще и в написании, и в понимании. Как там написан сам хай-ордер - это уже вопрос третий. Главное чтобы функционально чисто, и делал то, что я ожидаю от него.
ок, да. значит я тебя правильно понял
> Все эти функции можно реализовать императивно, циклом по аргументам. И я даже практически уверен, что для оптимизаций многие языки так и делают.
ну, некоторые вещи, даже самые простые, типа обхода ветвящихся структур, сделать без рекурсии таки не получится

короче, this:
> Возьмем, например, дерево. Для него тебе надо писать fold, ну а через него и остальные map-reduce. Fold - рекурсивная функция. То есть для любой задачи, где тебе надо хранить данные в своей коллекции (дерево, граф), тебе надо писать fold и, возможно, еще несколько специальных оптимизированных (non-strict) reduce функций.
два чая этому оратору
>> No.43915 Ответ
>>43912
> Возьмем, например, дерево.
А, ну с этого нужно начинать. Я же говорю о замене for'у, дерево фором никак не обойдешь в любом случае, так что разницы с императивкой нет, все так же само. Map/Reduce/.. - это для одномерных коллекций, если не написать их специально под другого рода структуры.
>> No.44329 Ответ
Извиняюсь за оффтоп. Стоит ли задание из SICP выполнять не на scheme.
>> No.44330 Ответ
>>43915
> дерево фором никак не обойдешь в любом случае
Дерево по-всякому обходить можно. Должны быть реализованы несколько способов обхода, возможно так же и какой-то дефолтный. Могут быть какие способы, диктованные назначением и видом дерева. Вон, в С++ у деревьев есть реализованный линейный обход в виде итераторов.
>> No.44406 Ответ
Аноны, помогите с задачей в SICP (сама задача http://puu.sh/mchMf/a1dd607cef.png, дошел до 39 страницы)
Вот мое решение http://puu.sh/mchR9/1397ec95bd.png , оно верное, но его явно можно упростить и улучшить, как это сделать?
>> No.44407 Ответ
>>44406
Ну, для начала, там всего 3 варианта, а не 6. Тебе же пофиг, в каком порядке квадраты брать.
>> No.44452 Ответ
Файл: dunewormsanta.jpg
Jpg, 79.73 KB, 500×684 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
dunewormsanta.jpg
тред не читай @ сразу отвечай

Котаны, а поясните за диалекты. В чем, собственно, разница?
>> No.44925 Ответ
>>44452
Ну а ты как думаешь?
>> No.44926 Ответ
Файл: qwe13.png
Png, 2.96 KB, 202×34 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
qwe13.png
>>44925
Убери эту херню, плез.
>> No.44927 Ответ
>> No.45164 Ответ
Я тут сомневался в какой тред писать, но у меня абсолютно та же задача что и у >>44406-куна. А ещё где-то тут был целый тред по sicp, может у кого найдётся ссылка.

Я вижу три пути решения: через булевы операции, как собственно у, через вложение свитчей и развилок, и через дополнительные переменные. И не то что бы мне было принципиально хотя хотелось бы то что проще и элегантней, вот только я не определился, но мне не понятно почему Рокет ругается на третий вариант в таком исполнении:
(define (test a b c)
    (+ (if (> a b)
           ((define min b) (* a a))
           ((define min a) (* b b)))
       (if (> c min) (* c c) (* min min))))
define: not allowed in an expression context in: (define min (b))
>> No.45167 Ответ
Запощу кстати рабочее:
(define (test a b c)
    (cond ((> a b)
           (+ (* a a) (if (or (> b c) (= b c))
                          (* b b)
                          (* c c))))
          ((< a b)
           (+ (* b b) (if (or (> a c) (= a c))
                          (* a a)
                          (* c c))))
          ((= a b)
           (+ (* a a) (if (> c b) (* c c) (* b b))))))
>>45164

А >>44406 навернётся на (abs 2 2 1)
>> No.45188 Ответ
Разъясните ньюфагу, где и для чего вы используете лисп кроме емакса и чем хаскель хуже?
>> No.45189 Ответ
>>45188
Лисп используется для обучения программированию в книжке SICP, т.к. эта шняга суперпростая, код представляет собой какбы абстрактное синтаксическое дерево. Хачкель очень математичен и значительно сложнее лиспа. Он не хуже, он другой.
>> No.45190 Ответ
>>45189
То есть кроме этой книжки лисп бесполезен?
>> No.45192 Ответ
>>45190
Помнится на какой-то конфе типа Стачки, один докладчик говорил что они успешно применяют в продакшене closurescript например.
>> No.45193 Ответ
>>45190
Ещё Web-серверах на модулей и маршрутизаторов сетевых настройки задавать удобно нём на.
>> No.45195 Ответ
>>45193
От коллег пизды не получишь за это?
>> No.45196 Ответ
>>45195
Евrеи все тут - удивляещ мене ти щлёма?
>> No.46021 Ответ
Файл: рыжие-Хоро-spice-and-wolf-неко-980175.jpg
Jpg, 425.49 KB, 602×900 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
рыжие-Хоро-spice-and-wolf-неко-980175.jpg
Анон, мне кажется или сообщество common lisp загибается?
Можешь скинуть ссылки на форумы/сайты и подобное с живыми проектами и комьюнити?
>> No.46023 Ответ
>>46021
А оно вообще было живым когда-нибудь, лол?

мимо
>> No.46045 Ответ
>>46023
В прошлом веке вполне себе живое было. Сейчас уже того фана нет, а в тырпырпрайзе не используется.
>> No.46046 Ответ
>>46045
>>46021
Грызите кожуру, она на бохатой жвм. Лишп только для академического задрачивания.
>> No.46047 Ответ
>>46046
> Грызите кожуру
Нет, спасибо. Это совсем не тот Лисп, каким его любили.
>> No.46048 Ответ
Файл: песочница-разное-баян-диалог-1042137.jpg
Jpg, 376.86 KB, 624×800 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
песочница-разное-баян-диалог-1042137.jpg
>>46045
А что тогда посоветуешь неубиваемое, т.е. мне нужно ядро для системке, которое при случайном эксепшне не будет валиться, а будет работать. В маинстримных языках я не силён, знаю си, там очень легко отстрелить себе ногу, не знаю с++, там ещё легче, java на каждый чих try-catch. Куда копать, чтобы в случае ошибки можно было отладить, не теряя контекста к примеру или на лету переписывать код. Python, Ruby, JS (серверный) позволяют это сделать или лучше копать в сторону функциональных языков. Может я чего-то не знаю?
>> No.46071 Ответ
>>46021
#lisp на FreeNode.
>> No.46083 Ответ
>>46045
Что на счёт clojure?
>> No.46100 Ответ
>>46071
Спасибо, доброанон
>>46045
Было про кложуру. Это не лисп, это что-то другое
>> No.46101 Ответ
>>46100
Это диалект лиспа.
>> No.46102 Ответ
>>46101
Н-но кложура используется грязными веб-макаками, это никак не может быть что-то близкое к божественному лиспу!!
>> No.46527 Ответ
Файл: 1475686838161.png
Png, 2.06 KB, 300×20 - Нажмите на картинку для увеличения
edit Find source with google Find source with iqdb
1475686838161.png
>>46102
Если человек решился писать на кложуре, да еще и сам, особенно в вебе, то это значит что человек стремится к просветлению.
>> No.47537 Ответ
Есть ли в Racket аналоги функций ord и chr (получить код символа, получить символ по коду)?
>> No.47555 Ответ
>> No.47602 Ответ
Доброаноны, почему кложура считается диалектом лиспа?
Только из-за синтаксиса завязанного на скобочки?
Ну так у той же жабы синтаксис завязан на фигурные скобочки и точки с запятой, прямо как у си. Но никто же не говорит, что жаба -- диалект сей.
>> No.47613 Ответ
>>47602
http://alexott.net/ru/clojure/clojure-intro/#sec2

> От Lisp'а Clojure "унаследовал" макросы, мультиметоды и интерактивный стиль разработки, а JVM дает переносимость и доступ к большому набору библиотек, созданных для этой платформы.

И далее отличия: http://alexott.net/ru/clojure/clojure-intro/#sec3

> Только из-за синтаксиса завязанного на скобочки?
Я бы не назвал кложуру лисподиалектом. По синтаксису ЯП оценивет совсем зелень, про скобочки — толстозелень.
>> No.47917 Ответ
Лиспаны, что скажете про GNU Guile и GUIXе?
>> No.47942 Ответ
>>47917
В Guile обещают не завозить костыли Elisp, а сделать его самостоятельной реализацией R5RS и обратную совместимость с Elisp уже костылять на ней. Вряд ли Guile получит широкое распространение, но было бы здорово иметь фунционал имакса со всеми его расширениями в нормальной виртуальной машине и общаться с ним на нормальном языке. Вряд ли язык получит широкое распространение вне сообщества GNU, хотя всё возможно.
Про GUIX слышал только много похвал, мол оно очень клёво переносит функциональную парадигму в менеджмент пакетов. Может если с ним работать на уровне разработчика и только в GuixSD, оно чувствуется, а на уровне пользователя мне вот и с дебиановским apt'ом очень удобно без всякой функциональщины. Может быть пакеты собирать с GUIX'ом и удобнее будет.


Пароль:

[ /b/ /u/ /rf/ /dt/ /vg/ /r/ /cr/ /lor/ /mu/ /oe/ /s/ /w/ /hr/ ] [ /a/ /ma/ /sw/ /hau/ /azu/ ] [ /tv/ /cp/ /gf/ /bo/ /di/ /vn/ /ve/ /wh/ /fur/ /to/ /bg/ /wn/ /slow/ /mad/ ] [ /d/ /news/ ] [ Главная | Настройки | Закладки | Плеер ]