Анна
Ayrat
Ayrat
ругается на мой вызов sum
Ayrat
Module Language: there can only be one expression in the definitions window in: (sum 1 2)
Ayrat
но это неясно
Анна
#lang racket
Ayrat
аааа
Анна
ты там можешь запиливать свои языки, поэтому надо указывать явно в коде
Ayrat
всё, работает, да
Анна
Ayrat
@AnutaU а как каррировать +?
(+ 1) возвращает 1, а не функцию
Ayrat
ну я понимаю что можно явно дефайн лямбды сделать
Ayrat
но хочется покороче
Ayrat
Понял. как понять где мультиарность, а где можно карировать?
Ayrat
только если явно лямбдами задано?
Ayrat
ну т.е. там где явно аргументы прописаны не списком, там можно
Ayrat
?
Анна
в моей доке оказывается есть про каррирование
Анна
'''
(define ((pow x) y)
(if (= y 0)
1
(* x ((pow x) (- y 1)))))
'''
Ayrat
да, есть. Но нет про мультиарность)
Анна
мультиарность по умолчанию
Анна
то есть там нет такого, как в F#, что все функции ровно от одного аргумента
Ayrat
(define (map f xs)
(if (null? xs)
null
(cons (f (car xs)) (map f (cdr xs)))))
(define (add-one x)
(+ 1 x))
(map add-one (list 1 2 3 4))
Ayrat
хотел так
(map (+ 1) (list 1 2 3 4))
Vladislav
Анна
Анна
Но яж не весь Racket знаю, может там ещё какие няшки есть
Анна
и расширяемое же!
Ayrat
Понял тебя. Щас к лабе перейду
Анна
с лабой хуже, там надо лекцию было слушать 🤔
Ayrat
Это челендж
Анна
я в тебя верю!
Анна
только на гитхаб в открытый доступ не клади, а то студенты с тебя спишут ещё 😂
Hog
Внедряй баги уникальные типа фингерпринта, чтобы можно было отличить копию!
Hog
Еле доскролил до конца - скролю, а количество непрочитанных сообщений - на месте стоит!
Анна
Hog
А что там учиться? Наливай да пей!
Hog
Это челендж
Это ты решил @neftedollar ещё пару-тройку языков в кодбейз подбросить? :)
Ayrat
Ayrat
потому что не хочу жвм
Анна
А я вообще не поняла, что произошло, но Ayrat внезапно стал писать на лиспе 🤔
Ayrat
да изи язык же :D
Анна
а до этого мы обсуждали проблему синтаксической неоднозначности и дефицита скобок
Roman
дальше перл?
Hog
Язык Изи - иврит!
Roman
ну не изи, а изи соломоныча
Romɑn
Romɑn
Я на нем sicp проходил даже на кожу смотрел недавно в ностальгии
Анна
Hog
Там чо удобно - можно код манкипатчить налету, причём не свой даже :)
Ayrat
Хм. Лисп динамически типизируемый, но прохавать одним null? чеком любые типы не может
Hog
Romɑn
Анна
Ayrat
@AnutaU про sum-all которая списки должна все вложенные просуммировать.
Моя наивная имплементация
(define (sum-all xs)
(if (null? xs)
0
(+ (sum-all (car xs)) (sum-all (cdr xs)))))
Ayrat
ааааа, может
Ayrat
это я тупой
Ayrat
он делает (null? 2) -> false
Ayrat
и валится на (car 2)
Ayrat
ЛОГИЧНО
Ayrat
да, без number? никуда
Анна
Что же тут будет, когда ты до моей бомбы-задачи про тяд Тейлора дойдёшь 🤔
Ayrat
Ayrat
поменял местами проверки -> оптимизация 9000
Анна
Ayrat
есть мнение что число всегда не null?
поэтому если поменять местами проверки, то на пару проверок меньше будет по итогу
Анна
логично
Vasily
Норкоманы
Анна
Я вроде этот текст в каком-то угаре полном писала
Анна
я была вымотана в край тогда
Ayrat
Отлично написано,!
Анна
Анна
Это ты походу всё ещё практическое задание смотришь. А лаба новенькая вот https://github.com/AnnaUdovichenko/proglang-problems/blob/master/hw3/hw3.md
Ayrat
кстати, с измением мест проверок
этот код
(define (sum-cond xs)
(cond [(null? xs) 0]
[(number? (car xs)) (+ (car xs) (sum-cond (cdr xs)))]
[#t (+ (sum-cond (car xs)) (sum-cond (cdr xs)))]))
Ayrat
превращается в
(define (sum-cond xs)
(cond [(number? xs) xs]
[(null? xs) 0]
[#t (+ (sum-cond (car xs)) (sum-cond (cdr xs)))]))
Анна
Ну видимо там такое и задумывалось, просто зажёваными мозгами написала тогда, а потом забыла