Romɑn
Romɑn
Hog
@neftedollar Нучоа, как там код Ayrat ?
Hog
говорят, тебя сегодея приобщили :)
Hog
https://www.facebook.com/6841740747/posts/10156060076995748/
Hog
Hog
https://twitter.com/dsyme/status/1062450129649745922?s=12
Ayrat
@AnutaU призываю тебя
> (let ([x 5])
(let ([x 2]
[y x])
(list y x)))
'(5 2)
вопрос, почему 5 2?
вот мы биндим 5 к x
затем внутри скоупа этого бинда шадовим предыдущий бинд и биндим 2 к х
затем биндим x (который уже 2) к y.
В скоупе второго let создаём лист из y (который 2) и х (который 2)
Ayrat
ААААА я понял
Ayrat
всё, забей
Ayrat
:D
Ayrat
бинды второго let ещё не вступили в силу, когда мы биндим x к y
Ayrat
т.е. x всё ещё 5
Анна
Лет-звёздашка
Ayrat
дадада
Ayrat
let* будет работать так, как я описал
Анна
Ayrat
а обычный так, как я ДОписал
Анна
Я какой-то ящик Пандоры открыла 😂
Ayrat
всё отлично. Давно хотел въехать в скобочки
Анна
Vladislav
(cond (😳 =🥶) (☹️)(🙂))
Ayrat
Ayrat
и туда же
https://i.imgur.com/TKpuo4Z.png
Vladislav
В шарпе можно с ними прям писать))
Vladislav
И свифте
Ayrat
@AnutaU ещё вопрос
Рассмотрим вложенный список, похожий на тот, что рассмотрен выше, но кроме чисел допускаются элементы другого типа. [UPD!] Напишите функцию sum-indifferent, которая принимает такой список и суммирует все элементы-числа из этого списка.
я понимаю как это сделать через патерн матчинг, но т.к. он по ссылке не был пройден
https://github.com/AnnaUdovichenko/proglang-problems/blob/master/pr3/pr3.md
видимо можно как-то без него
но у меня есть ощущение что null? и number? не хватит
Vladislav
Почему ещё нет emoji обфускатора? Мне кажется того, кто это увидит настолько поразит происходящее, что он оставит все попытки декомпиляции
Анна
Анна
надо скипать лишнее
Vasily
Cond же
Ayrat
надо скипать лишнее
Воот. Смотри, как я строил логику
1) берём в функцию чо угодно (мы не знаем прилетит ли нам список, число или строка например)
2) Это число? збс, возвращаем число
2) Это пустой список? возвращаем 0
3) (если мы дошли до этого этапа, у нас может быть НЕпустой список или НЕчисло (т.е. строка)
т.е. надо отсеять НЕ списки как-то чтобы пойти дальше
Анна
есть list?
Ayrat
(list 2 (list "4" 5))
Ayrat
есть лист
Анна
погоди
Vasily
Непустой список cond с рекурсией
Анна
есть примитив такой
Ayrat
(define (sum-indifferent xs)
(cond [(number? xs) xs]
[(null? xs) 0]
[#t (+ (sum-indifferent (car xs)) (sum-indifferent (cdr xs)))]))
Анна
list? number? null?
Ayrat
аххха
Ayrat
про list? по ссылке нет!
Анна
ох уж эти знаки вопроса в идентификаторах и чаты 😂
Анна
Ayrat
но я думал что должно хватить того о чём рассказывается!
Ayrat
не, ну логично конечно
Анна
У нас там студенты самостоятельные! Я забыла дописать условие, дак они по примерам тестов разреверисили и сделали, мне даже не сказали!
Ayrat
Vasily
В т.ч. башкирские
Hog
Какой лисп! Ля, чо! Не Жигуль, но всё ж!
Vasily
О боже
Vasily
Гримасы маркетинга для соотечественников за рубежом
Vladislav
Roman
Hog
Vasily
Это я в курсе
Крылатый
Утра, котаны!
Hog
Vladislav
Анна
давайте соберём толпу от F# сообщества и привезём в Минск на конфу тусить с Вагифом
Vasily
В начале декабря?
Анна
Vasily
В это время я буду в самолете Пхукет-Москва
Ayrat
@AnutaU и снова призываю :D
Напишите функцию funny-number-stream, которая похожа на стрим натуральных чисел за исключением того, что все числа, кратные 5 - отрицательные (то есть 1, 2, 3, 4, -5, 6, 7, 8, 9, -10 ...).
(define (funny-number-stream)
(define (s n)
(let [head
(if (= (remainder n 5) 0)
(* -1 n)
n)]
(stream-cons head (s (+ n 1))))))
(funny-number-stream)
кидает странную ошибку
begin (possibly implicit): no expression after a sequence of internal definitions in: (begin (define (s n) (let (head (if (= (remainder n 5) 0) (* -1 n) n)) (stream-cons head (s (+ n 1))))))
Vasily
Ayrat совсем расслабился, теперь @neftedollar вкалывает
Анна
@AnutaU и снова призываю :D
Напишите функцию funny-number-stream, которая похожа на стрим натуральных чисел за исключением того, что все числа, кратные 5 - отрицательные (то есть 1, 2, 3, 4, -5, 6, 7, 8, 9, -10 ...).
(define (funny-number-stream)
(define (s n)
(let [head
(if (= (remainder n 5) 0)
(* -1 n)
n)]
(stream-cons head (s (+ n 1))))))
(funny-number-stream)
кидает странную ошибку
begin (possibly implicit): no expression after a sequence of internal definitions in: (begin (define (s n) (let (head (if (= (remainder n 5) 0) (* -1 n) n)) (stream-cons head (s (+ n 1))))))
Ты не возвращаешь функцию 🤔 Стрим должен возвращать функцию, которая при вызове порождает пару (значение . новая функция)
Ayrat
Ayrat
(require racket/stream)
Ayrat
:D
Анна
не заметила :)
Ayrat
АААА
Ayrat
я должен был САМ стримы определить
Анна
ну у меня подразумевалось что надо руками это писать, да
Анна
но ты же умный и умеешь гуглить :)
Ayrat
не, ну там не было сказано - определите stream
там первая же задача -
(1) Напишите функцию stream-for-n-steps, которая принимает стрим s и число n, и возвращает список из первых n значений, порождённых стримом. Считайте, что n неотрицательное.