Ayrat
Анна
Есть Typed Racket тоже. Но там вроде явно надо
Vladislav
Айрат просто упоролся
Vasily
Норкоманы
Анна
Pavel
https://github.com/Ivana-/Liscript
Éminence grise
https://gist.github.com/ijsgaus/7360d29e21421fa780980b9d0c2c49a8
Vladislav
Анна
Roman
Roman
вроде да, но почему-то не уверен
Éminence grise
А там нет цикла - там все ленивое
Éminence grise
Там iter только не ленивый - а он концевой рекурсией
Roman
а точно, проморгал, что лямбду возвращает
Анна
@gsomix привет!!!
gsomix
Привет.
Анна
Крылатый
gsomix
Крылатый
Анна
gsomix
Написан на Racket.
Romɑn
Romɑn
Так что не расслабился он)
Romɑn
Ему ещё доки писать
Romɑn
Я вижу результат
Ayrat
@AnutaU я чот туплю, а как эту мультиарность применить?
объявил
(define stream-empty
(lambda () null))
(define (stream x )
(lambda () (cons x stream)))
хочу сделать так
(stream 1 2 3 null)
а он мне
stream: arity mismatch;
the expected number of arguments does not match the given number
expected: 1
given: 4
arguments...:
Анна
Ayrat
бида
Ayrat
я смотрю на исходники ракета и понимаю что ничего не понимаю)
Анна
Зачем исходники? там же вроде документация есть норм
Ayrat
https://github.com/racket/racket/blob/710cbd25bf30721009f174710aa0a4e49b884cca/racket/collects/racket/stream.rkt
Ayrat
ну в доке не указано как имплементировано чтоб получить мультиарность и вообще
Анна
а, ты стандартные стримы реверсишь 🤔
Анна
Ayrat
вот откуда в исходниках stream-empty? берётся?
Ayrat
говорится что этот модуль provide эту функцию
Ayrat
а я в упор не вижу её объявления
Ayrat
только использование
Ayrat
кстати, сейчас подумал что эмблема ракета напоминает пепси-колу
Ayrat
@neftedollar я пишу доки! Просто иногда ракет мучаю)
Vladislav
Анна
Ayrat тут смотрел?
https://docs.racket-lang.org/guide/lambda.html
Ayrat
ох ничоси
Éminence grise
Ayrat
Vladislav
боюсь если я скину код того как я строки делаю дотнет-пригодными, то меня повесят
Vladislav
let prettyName (name: string) =
let name = String(name.SkipWhile(fun c -> not <| Char.IsLetter(c)).ToArray())
let toTitleCase (str: string) =
if str.Length > 1 then
[|yield Char.ToUpper(str.[0]); yield! str.Skip(1)|]
|> String
elif str.Length = 1 then
Char.ToUpper(str.[0]).ToString()
else
String.Empty
Regex.Replace(name, "[\s\W_]+", " ").Split(' ')
|> Array.map toTitleCase
|> fun arr -> String.Join("", arr).Trim()
Pavel
Vladislav
ну альтернативы были бы интересны если делать нечего)
Pavel
линк бы убрал чтоли
Vasily
А что этот код вообще должен делать?
Pavel
видимо в pascal-case форматить
Vasily
Ишь ты
Vasily
Я бы сделал через Regex.Matches
Vasily
С последующим апперкейсом и конкатом
Vasily
Только неясно, почему в регулярку [a-zA-z]+ попадают подчеркивания
Vasily
А, опечатка
Vasily
Вообще тогда Regex.Matches|>Seq.map toUpper|>String.concat ""
Vasily
Чет типа такого
Vladislav
тут вопрос регулярку такую написать, которая бы не позволяла в начале цифры, а если где-то где угодно после первой буквы то да
Vasily
А, ну это бэктрекинг
Ayrat
@AnutaU нужна твоя помощь.
https://gist.github.com/Szer/889650fd342e4b4d7910363560517c9f
выделил нужный кусок для воспроизведения.
у меня почему-то одна реализация падает с выжиранием всей памяти, а другая нет. Хотя все промежуточные этапы заворачиваются в лямбды и не должны жадно вычисляться
И я не могу понять почему
Romɑn
Ayrat
разница только в реализации stream-map
в плохом варианте, который валит всё
сделано через stream-cons ... (а он по сути просто заворачивает всё в лямбду)
чтобы не валилось надо явно написать вместо stream-cons
lambda () (cons ...)
Ayrat
Анна
Ayrat
Анна
Так, я наверное догнала