Анна
и жуки студенты ничего не сказали
Ayrat
да не, збс же. Прям уаще
Ayrat
с нуля ж понятно, поставил и поехал
Анна
ну практические так и задуманы были, чтобы перед лекциями их выдавать для первичной подготовки мозгов
Анна
по OCaml тоже есть практические, но они вообще в скетчах, онлайн код фигачишь и сразу запускаешь
Анна
на гитхаб не перенесла пока для истории
Ayrat
перехожу к задачам под pr3, потом пойду лабу мучать
Анна
Vasily
Я вот мало чо понял
Vasily
[#t (+ (sum-cond (car xs)) (sum-cond (cdr xs)))]
Vasily
Вот енто неясно
Vasily
И шо такое car и cdr
Romɑn
машинка и кадр
Anonymous
это считай head и tail
Vasily
А, ясно
Vasily
Но синтаксис НИПАНЯТНЫЙ
Anonymous
только car не удаляет элемент из листа, просто говорит чё там в хэде
Ayrat
@AnutaU воспользуюсь твоим присутствием была задача Напишите функцию sequence​, которая принимает аргументы low​, high ​​(целые числа) и step ​(положительное число). Функция sequence ​должна возвращать список чисел от low ​до high с ​шагом step​. я её так решил: (define (inner low high step result) (if (> low high) result (inner (+ low step) high step (append result (list low))))) (define (sequence low high step) (inner low high step null)) (sequence 1 10 2) работает правильно. Вопрос - в одну функцию её можно записать?
Ayrat
Можно через cons в начало списка клеить
да, но порядок будет нарушен
Ayrat
они ж наоборот пойдут, с конца
Vasily
Юные шаловливые любители лиспа
Ayrat
(seq 1 10 1) вернёт 10, 9, ... 1
Анна
да, но порядок будет нарушен
Я от компа отошла и туплю
Ayrat
А вот вопрос, можно ли закложурить как-то :D т.е. я сделал в 2 функции, вложить как-то можно?
Анна
Вложить можно
Анна
let и letrec тебе в помощь
Ayrat
ага, ща погуглю, спасибо
Анна
(define (sequence low high stride) (if (> low high) null (cons low (sequence (+ low stride) high stride))) )
Анна
и ничо вроде не наоборот
Анна
только не хвостовое
Ayrat
да, точно
Ayrat
так можно, но не хвостовое
Vasily
Мэджик
Анна
так можно, но не хвостовое
просто с append в конец у тебя добавление становится за O(n) вместо O(1)
Ayrat
эт я понимаю.
Vasily
А then else не предусмотрен?
Ayrat
ну там типа (if (bool expr) (then-expr) (else-expr))
Ayrat
зачем ключевые слова?)
Анна
зачем ключевые слова?)
их можно макросами сделать!
Vasily
А если else if?
Vasily
Скобочками?
Анна
А если else if?
if на много веток - cond
Vasily
А, ясно
Vasily
А почему в cond скобки квадратные?
Анна
вложенные if тоже можно
Анна
круглые и квадратные взаимозаменяемые
Ayrat
потому что его можно дать очень быстро если только круглые юхать
Анна
@vshapenko у меня по-моему на гитхабе это всё написано :)
Ayrat
@AnutaU а замыкания работают?
Vasily
Ну до гитхаба я пока не добрался, поем твоего мозга тут
Ayrat
должны ж
Ayrat
ну да, это ж фп, куда без замыканий
Ayrat
а это перевод?)
Ayrat
@fillpackart, ты что-то скрываешь
Vasily
Кстати да
Vasily
Что-то похожее было
Ayrat
Ну всё, на вилы его
Ayrat
плагиатор
Vasily
НА КОСТЕР ВЕДЬМУ
Ayrat
поди сам себя перевёл
Ayrat
фу
Ayrat
есть мнение, что оригинал на русском)
Анна
Я ксати свой курс частично стырила и не скрываю. А то мало ли 🤷‍♀️
Анна
Ну тут за перевод статьи гнобят :)
Vasily
За перевод ваще на вилы
Vasily
А курс, ну что курс. Ну с торрента скачала небось
Анна
Ну я по мере того, как умнею, его меняю
Vasily
Буду знать
Ayrat
@AnutaU спасай, я чот не понимаю Напишите функцию string-append-map​, которая принимает список строк xs ​и строку suffix, ​и возвращает список новых строк, присоединив к каждой строке исходного списка строку suffix ​(без пробелов между строкой и суффиксом). Используйте библиотечные функции map ​и string-append​. (define (string-append-map xs suffix) (define (app suffix str) (string-append str suffix)) (map (app suffix) xs)) (string-append-map (list "1" "2" "3") "a") ругается на arity mismatch при вызове (app suffix) я ж думал я так хитро закарировал, там же в (app) объявлено два аргумента
Анна
ну ты не закаррировал
Ayrat
хм
Ayrat
а мне казалось да!
Анна
да и там же на месте можно лямбду определить
Анна
прямо в map и передать
Ayrat
кстати, да