Анна
Есть Typed Racket тоже. Но там вроде явно надо
Igor
он динамический
А чем же он тогда лучше clojure?
Ayrat
А чем же он тогда лучше clojure?
ммм. я вообще ничего про лучше хуже не говорил!
Vladislav
Айрат просто упоролся
Ayrat
Айрат просто упоролся
ты так говоришь, как будто это что-то плохое
Vasily
Норкоманы
Анна
Igor
ммм. я вообще ничего про лучше хуже не говорил!
Ок, просто думал если и выбирать то что-то практичное (что бы потом реальные программы писать)
Pavel
Айрат просто упоролся
это что. некоторые на хаскеле лиспы пишут
Pavel
https://github.com/Ivana-/Liscript
Éminence grise
https://gist.github.com/ijsgaus/7360d29e21421fa780980b9d0c2c49a8
Vladislav
Анна
Ayrat
https://gist.github.com/ijsgaus/7360d29e21421fa780980b9d0c2c49a8
https://github.com/Hopac/Hopac/blob/6b4fe8e89e95aa9f2119e96f19d37cfe541e7715/Libs/Hopac/Stream.fs#L19 только там они не через fun () -> ..., а через явные джобы
Roman
https://gist.github.com/ijsgaus/7360d29e21421fa780980b9d0c2c49a8
а generate в цикл компилятором оптимизируется?
Roman
вроде да, но почему-то не уверен
Éminence grise
А там нет цикла - там все ленивое
Éminence grise
Там iter только не ленивый - а он концевой рекурсией
Roman
а точно, проморгал, что лямбду возвращает
gsomix
это что. некоторые на хаскеле лиспы пишут
Гораздо веселее, когда наоборот. https://lexi-lambda.github.io/hackett/
Анна
@gsomix привет!!!
gsomix
Привет.
Анна
Гораздо веселее, когда наоборот. https://lexi-lambda.github.io/hackett/
погоди, это Хаскель с синтаксисом как у Лиспа?
Крылатый
Чык чырык
Анна
gsomix
Написан на Racket.
Romɑn
Ayrat совсем расслабился, теперь @neftedollar вкалывает
Так работа тут такая "автоматизируй это"
Romɑn
Так что не расслабился он)
Romɑn
Ему ещё доки писать
Vasily
Ему ещё доки писать
Это ты так думаешь
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 я пишу доки! Просто иногда ракет мучаю)
Анна
Ayrat тут смотрел? https://docs.racket-lang.org/guide/lambda.html
Ayrat
а скотобаза большая?
всё относительно. в loc не мерял честно говоря
Ayrat
ох ничоси
Ayrat
https://docs.racket-lang.org/guide/lambda.html#%28part._rest-args%29
да, туда уже и смотрю по наводке Анны
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()
Vladislav
а ты хочешь что б работало быстро или код красивый?
да я на самом деле просто этот ужас скинул, пока не вызывает проблем
Vladislav
ну альтернативы были бы интересны если делать нечего)
Pavel
линк бы убрал чтоли
Vasily
А что этот код вообще должен делать?
Pavel
видимо в pascal-case форматить
Vladislav
А что этот код вообще должен делать?
"123123some__-useless:::Name" -> SomeUselessName
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 выделил нужный кусок для воспроизведения. у меня почему-то одна реализация падает с выжиранием всей памяти, а другая нет. Хотя все промежуточные этапы заворачиваются в лямбды и не должны жадно вычисляться И я не могу понять почему
Ayrat
разница только в реализации stream-map в плохом варианте, который валит всё сделано через stream-cons ... (а он по сути просто заворачивает всё в лямбду) чтобы не валилось надо явно написать вместо stream-cons lambda () (cons ...)
Анна
Так, я наверное догнала