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
но хочется покороче
Анна
@AnutaU а как каррировать +? (+ 1) возвращает 1, а не функцию
там настоящая мультиарность, у + любое количество аргументов, и оно автоматически не каррируется
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
Это ты решил @neftedollar ещё пару-тройку языков в кодбейз подбросить? :)
да давно хотел на чем-то лиспоподобном пописать, но не кложа
Ayrat
потому что не хочу жвм
Анна
А я вообще не поняла, что произошло, но Ayrat внезапно стал писать на лиспе 🤔
Ayrat
да изи язык же :D
Анна
а до этого мы обсуждали проблему синтаксической неоднозначности и дефицита скобок
Roman
дальше перл?
Hog
Язык Изи - иврит!
Roman
ну не изи, а изи соломоныча
Hog
дальше перл?
А отличный язык, кстати :)
Romɑn
Я на нем sicp проходил даже на кожу смотрел недавно в ностальгии
Roman
А отличный язык, кстати :)
грят, еще и любая строка синтаксически валидная конструкция, что удобно
Анна
Я на нем sicp проходил даже на кожу смотрел недавно в ностальгии
я вот не осилила пока sicp 🤔 а ты смотрю крутан
Hog
Там чо удобно - можно код манкипатчить налету, причём не свой даже :)
Ayrat
Хм. Лисп динамически типизируемый, но прохавать одним null? чеком любые типы не может
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
Что же тут будет, когда ты до моей бомбы-задачи про тяд Тейлора дойдёшь 🤔
оптимизнул твоё решение :D (define (sum-all xs) (if (number? xs) xs (if (null? xs) 0 (+ (sum-all (car xs)) (sum-all (cdr xs))))))
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)))]))
Анна
Ну видимо там такое и задумывалось, просто зажёваными мозгами написала тогда, а потом забыла