[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]

No.485 Reply
File: mccarthy-youre-doing-it-wrong-s.jpg
Jpg, 55.21 KB, 550×560 - Click the image to expand
edit Find source with google Find source with iqdb
mccarthy-youre-doing-it-wrong-s.jpg
Таки начал читать SICP.
Ни хуя не понимаю, почему при использовании
`(define (new-if predicate then-clause else-clause)
   (cond (predicate then-clause)
    (else else-clause)))`
происходит stack-overflow

`(define (sqrt-iter guess x)
   (new-if (good-enough? guess x)
      guess
      (sqrt-iter (improve guess x)
                 x)))`
Обесните, доброчан же
>> No.486 Reply
Ой, какое форматирование ужасное получилось.
Приведу полный листинг: http://pastebin.com/m6e859290
>> No.487 Reply
Потому что if - особая форма. Второе выражение if вычисляется только если первое не верно. В cond жеиспользуется аппликативный порядок исчислений и потому вычисляются оба выражения.

В случае
(define (sqrt-iter guess x)
(new-if (good-enough? guess x)
guess
(sqrt-iter (improve guess x) x))
)

выполнение функции просто никогда не завершится, что может приводить к разным результатам, в зависимости от интерпретатора/компилятора.
>> No.488 Reply
>>487
/s/первое не верно/условие не верно
>> No.489 Reply
>>487
Спасибо тебе Доброкодер, всё понял.
>> No.490 Reply
>>485
(Де)мотиватор порадовал. Сохраню
>> No.507 Reply
Продолжение банкета:

Функция f определяется правилом: f (n) = n, если n < 3, и f (n) = f (n − 1) + f (n − 2) + f (n − 3),
если n ≥ 3. Напишите процедуру, вычисляющую f с помощью рекурсивного процесса. Напишите
процедуру, вычисляющую f с помощью итеративного процесса.


Рекурсивный процесс очевиден совсем:
http://pastebin.com/m1adabfb0

А итеративный судя по всему следует делать как с числами Фибоначчи:
http://pastebin.com/m114d4730

Но как это сделать? Сколько надо аргументов нужно передавать и хули с ними там делать. Мне не очень понятно что вооще эта формула делает. Я её ручной трассировкой прогонял и смотрел результаты, но смысл не понел.
>> No.508 Reply
Решение найдено
http://pastebin.com/m5f565588
>> No.509 Reply
>>508
молодец, а слабо сделать то же самое за логарифмическое от n время?
(к сожалению, на схеме это будет неудобно)
>> No.512 Reply
Кстати... так, пища для размышления.
С использованием твоей функции f-iter...

(define (print i) (display i) (display " "))
(define (x-iter i)
   (if (= (modulo (f-iter 3 1 3 i) i) 1) (print i))
   (if (< i 100) (x-iter (+ i 1)))
)
(x-iter 1)

Как ты думаешь, что оно делает? :)
>> No.533 Reply
Это схема штоле? А чего не на CL?
>> No.540 Reply
File: 1.png
Png, 220.78 KB, 1280×992
edit Find source with google Find source with iqdb
1.png
File: 2.png
Png, 239.64 KB, 1280×992
edit Find source with google Find source with iqdb
2.png

Я оставил закладку на будущее, и вот сейчас щёлкнул посмотреть.
Это божественно! Пожалуй, я брошу Practical Common LISP на время.
>> No.541 Reply
>> No.547 Reply
>>533
CL - для быдла. Ио слишком раздут.
>> No.548 Reply
>>547
Луговский теперь быдло. Ну да, конечно.
На самом деле схема для обучения, а CL, Closure и т.п. — ынтырпрайз. У CL просто поддержка больше, но если не нужно быстро, то лучше развивать Scheme.
>> No.549 Reply
>>548
> CL, Closure и т.п. — ынтырпрайз
смищно. энтерпрайз - это ява. CL используется только несколькими компаниями по тем или иным причинам.
> Луговский теперь быдло.
Он всегда был быдлом.

Схема лучше тем, что развивается и проста. CLисперы же погрязли в онанизме на свой язык.
>> No.550 Reply
>>549
> энтерпрайз - это ява.
Closure тоже на JVM и с Java прекрасно совмещается. Так что она ближе к энтерпрайзу, чем Scheme. Scheme же ни с чем толком не совместима, разве что Guile использовать, а ядро писать на C.
> > Луговский теперь быдло.
> Он всегда был быдлом.
Быдлом он уж точно не был. Есть люди намного умнее, но и он не идиот.
>> No.551 Reply
>>548
> Луговский теперь быдло.
Говоришь так, словно когда-то он таким не был.
>> No.552 Reply
>>551
Быдло про лисп даже и не знает зачастую. Так что он все-таки выше.
>> No.555 Reply
>>550
> Closure тоже на JVM и с Java прекрасно совмещается.
Лол, на closure фапают только лисперы. В ынтерпрайзе она нах никому не нужна.
> Scheme же ни с чем толком не совместима, разве что Guile использовать, а ядро писать на C.
Лол. То, где ядро написано на клиспе, всегда можно написать его и на схеме, не смеши.
> Быдлом он уж точно не был. Есть люди намного умнее, но и он не идиот.
"Быдло" и "идиот" понятия ортогональные.
>> No.556 Reply
Скажите, в оп-пике надпись относится к Джону, или он её как бы произносит?
>> No.557 Reply
>>556
А вот это мой мальчик ты должен сам для себя решить :3
>> No.562 Reply
Ужас, основного идеолога "антибыдла" причислили к созданному им образу врага. Если VSL быдло, то в данном треде просто архи-быдло.
>> No.563 Reply
Пиздец. Матерящийся, полоумный, нетерпимый быдло-максималист у нас идеолог "антибыдла".

Пиздец.
>> No.564 Reply
>>563
> Матерящийся, полоумный, нетерпимый быдло-максималист
Bitches don't know about mah trolling? Луговский — хороший, годный тролль. Грубоватый, иногда толстоватый, но крайне эффективный.
>> No.565 Reply
>>564
Троллинг для быдла.
>> No.566 Reply
>>565
Недоказуемо. Но многие считают, что троллинг — это весело.
И давай не будем разводить холивар, "хорошо", "плохо", "для быдла", "для небыдла" — понятия относительные.
>> No.567 Reply
>>563
> Матерящийся, полоумный, нетерпимый
Ты за формой не видишь сути. Для чанов это страшный грех.
Алсо, ты, надеюсь, прочитал до конца тот эпичный С++ тред на sql.ru прежде чем делать такие выводы?
>> No.568 Reply
А где раньше появился мем "быдло"? На чанах или у vsl?
>> No.569 Reply
>>568
Он его стал применять до того, как вообще появились русские чаны.
>> No.570 Reply
>>569
Ну тогда >>563 вообще страшно сфейлил со своим недовольством идеологом "антибыдла".
>> No.571 Reply
>>570
Спасибо, Кэп!
>> No.572 Reply
>>568
в 19 веке, ёпт. Ты правда такой тупой или притворяешься? Только не надо утверждать, что ваш разлюбезный луговский придал темину "быдло" какое-то другое значение.


Алсо, >>568>>569>>570>>571 Сёмочка?
>> No.573 Reply
>>572
Какой агрессивный. Да еще и троллефоб. Ну точно вылитое небыдло.
>> No.574 Reply
>>572
Тем не менее никто, кроме битардов и vsl так этим словом не злоупотреблял. И судя по хронологии битарды переняли этот "мем" у vsl.
>> No.575 Reply
>>574
Ну таки ради истины стоит заметить, что форсил он его в основном на ЛОРе, коий имеет непустое пересечение с анонимусом АИБ.
>> No.578 Reply
File: test.lisp
Lisp, 0.00 KB, 0 lines - Click the image to get file
view edit
test.lisp
Тест
>> No.623 Reply
> Потому что if - особая форма. Второе выражение if вычисляется только если первое не верно. В cond жеиспользуется аппликативный порядок исчислений и потому вычисляются оба выражения.
Автохуй! Почитай документацию по cond и ты поймешь, что причина stack-overflow не в нем. Аппликативный порядок вычисления используется в вызове функции, поэтому когда ты используешь свой new-if вычисляется и первое условие и второе, выбирается только возвращаемое значение. Следовательно sqrt-iter будет всегда вызывать себя.


Password:

[ /tv/ /rf/ /vg/ /a/ /b/ /u/ /bo/ /fur/ /to/ /dt/ /cp/ /oe/ /bg/ /ve/ /r/ /mad/ /d/ /mu/ /cr/ /di/ /sw/ /hr/ /wh/ /lor/ /s/ /hau/ /slow/ /gf/ /vn/ /w/ /ma/ /azu/ /wn/ ] [ Main | Settings | Bookmarks | Music Player ]