Pavel
https://sharplab.io/#v2:DYLgZgzgNAJiDUAfA9gBwKYDsAEAJNAhgMYCwAUGlnoUQHQCiAHgC5YQCWymE5lO+qYrQCSmMO0boeFDDgDKATwisAtuXIrkMAK7B02OdgC82AILBmc5gCd0BNWXJ7m2dmLftWV2/exhj2OTYwSHBcrTaYsjAMABikdgAFGAJENgAtAB8Bsgq+okARsiM2AA8iH5JAJRQ2BBVVdXqZM5+BMoBQaEhAPQ9BrRuMOjimJ7owArYAIzYfW3A7NLdIW6j4952KkkpOImNWTNVza0q2swEBXrYAI4BAAxO6C6o1m6s1gBM2CUmXSt3UrpW7YeAzf7ddj+O4AUhm9wRiIe2GYAAsqNhXu9/AAiWg4wJkFbBFQEZhEVHYIolEoAd08qIhoQqIAA/O8Mtl9tgKiVDljMMxcTDTATGEyQuLHNKANqleiC6wKAAKyHemQAuk8XKS3NgCNYAOYAN06RN6PTA7WYEPCeSN+itHSdNvNwUQ2TtBFQ8RwAo+nwhHoGYGicQSyVS2AA+py6o1uUHstZIs1Qv6wDgcQARLjoUWE0IAYS4EGi6FoACU7DAANLoBTc4PsQ2YZC2CH3Ob9WzMbTWHAEHDvdCG9DWbDoRiebBELTochAA===
Pavel
в обоих
Pavel
именно это
Ayrat
Спасибо, ща помучаю
Ayrat
@deexpp багуля в гопаке. Оператор <|> реализован без делея https://github.com/Hopac/Hopac/blob/6b4fe8e89e95aa9f2119e96f19d37cfe541e7715/Libs/Hopac/Hopac.fs#L274 вот такой код падает с SO let rec f() = Alt.always 1 <|> f() f() хотя должен (если бы <|> как и ^=> был заделеен) возвращать лейзи и вычисляться моментально в 1
Ayrat
merge реализован через <|> потому и падает
Ayrat
щас закостылю у себя делей, ишью в хафа кину
Pavel
щас закостылю у себя делей, ишью в хафа кину
может проще у себя оператор переопределить? у тебя он там много где клеится
Ayrat
может проще у себя оператор переопределить? у тебя он там много где клеится
Может и проще, но после исправления баги придётся менять в зад.
Ayrat
Блин, давно надо было в нугет выкинуть. Взгляд со стороны всегда хорошо
Pavel
let private (<|>) a b = Hopac.Infixes.(<|>) a b
Pavel
будет личный в модуле снаружи никто не увидит
Ayrat
зачем взад менять то
ну понятно, я имел в виду что когда будет делей добавлен в кор либу, то там будет делей над делеем
Ayrat
хотя это не самая большая проблема
Ayrat
да, пожалуй так и сделаю
Ayrat
спасибо :D
Pavel
да не за что
Pavel
ну понятно, я имел в виду что когда будет делей добавлен в кор либу, то там будет делей над делеем
в принципе если на гопаковский <|> не закладываться то и откатывать не придется let private (<|>) a b = TBD
Pavel
@deexpp багуля в гопаке. Оператор <|> реализован без делея https://github.com/Hopac/Hopac/blob/6b4fe8e89e95aa9f2119e96f19d37cfe541e7715/Libs/Hopac/Hopac.fs#L274 вот такой код падает с SO let rec f() = Alt.always 1 <|> f() f() хотя должен (если бы <|> как и ^=> был заделеен) возвращать лейзи и вычисляться моментально в 1
погодь. этот пример же всегда будет падать хоть что делай. опреатор должен на вход получить 2 аргумента по любому а второй у тебя вычислиться не может. тут как в indefinetly же проблема
Roman
заглянул в код Fsharpx.Extras и нашел там среди прочего такое: /// Fixed point combinator. let rec fix f x = f (fix f) x И не могу вдуплить, зачем это надо. Может кто объяснить?
Roman
О_о. Это очень большая статья
Roman
Чтобы понять такую маленькую строчку кода
Ayrat
О_о. Это очень большая статья
вот объснение короче!!! https://math.stackexchange.com/questions/51246/can-someone-explain-the-y-combinator
Ayrat
(думаю ты предпочтёшь статью)
Vladislav
ого
Vladislav
The Y combinator is a higher-order function. It takes a single argument, which is a function that isn't recursive. It returns a version of the function which is recursive. We will walk through this process of generating recursive functions from non-recursive ones using Y in great detail below, but that's the basic idea.
Анна
Уже какой раз пытаюсь это понять и никак 😭
Ayrat
Уже какой раз пытаюсь это понять и никак 😭
кстати, я помню ты интересовалась в чём разница между статической и строгой типизацией. One often hears static typing referred to as strong typing and dynamic typing referred to as weak typing, but this is an abuse of terminology. Strong typing simply means that every value in the language has one and only one type, whereas weak typing means that some values can have multiple types. So Scheme, which is dynamically typed, is also strongly typed, while C, which is statically typed, is weakly typed (because you can cast a pointer to one kind of object into a pointer to another type of object without altering the pointer's value).
Анна
Не уверена, что на данный момент вообще существует единственно верная трактовка. Со статической понятно, а под слабой чуть разное кажется понимают. У меня есть подозрение, что дело не только в кастах
Roman
(думаю ты предпочтёшь статью)
а вот и нет. Я уже почти распарсил то, что там написано
Ayrat
но хорошо что ты выбрал челендж
Vladislav
https://github.com/cquery-project/cquery
Vladislav
прикольная штука для вскода и плюсов
Dr. Friedrich
А чо я-то сразу?
Vladislav
ну ты там любишь двигать указатели
Dr. Friedrich
Интересная штука
Dr. Friedrich
Но у меня нету таких больших C++-проектов :(
Ayrat
https://github.com/cquery-project/cquery
завидую. люди написали полноценный LanguageServer с подсветкой на AST а не регекспеами (потому что их подствека не ломается от переноса строк и референсы прям над аргументами функции висят, что без AST невозможно сделать)
Ayrat
ну почему же почему же почему же Кшыштоф не юзает LS
Vasily
Велосипедист
Dr. Friedrich
И что Кшиштоф юзает? Разве у него не нормальная подсветка?
Ayrat
А в чём же там проблема?
проблема Ionide что он он подсветку делает на тонне правил регекспа
Dr. Friedrich
Вроде он тот же FCS юзает
Ayrat
Вроде он тот же FCS юзает
у него своё добро. FsAutoComplete.exe !
Ayrat
для интеллисенса
Dr. Friedrich
у него своё добро. FsAutoComplete.exe !
Дак а оно линкуется с FCS
Ayrat
и миллиард регеспов для подсветки
Ayrat
Дак а оно линкуется с FCS
но AST он отбрасывает
Ayrat
он из FSC только варнинги и ошибки тянет
Ayrat
для конкретных строк
Dr. Friedrich
Можно сделать лучше.
Ayrat
и ещё наколхозил свой автокомплит который мягко говоря пиздец какой долгий
Dr. Friedrich
(собстно мы-то у себя и сделали 😜)
Ayrat
этот автокомплит ещё течёт регулярно
Ayrat
Раз в день стабильно приходится открывать TaskManager и наблюдать как этот FsAutoComplete выжрал все 8 гигов свободной оперативы
Dr. Friedrich
А ты ещё спасибо скажи :)
Dr. Friedrich
https://github.com/cquery-project/cquery
Dr. Friedrich
Там есть цифры для хромиума
Ayrat
Там есть цифры для хромиума
ну ладно, для хромиума я верю что надо 10гб оперативы для всей семантики проекта и быстрого поиска
Ayrat
но для моих хелоуворлдов точно не надо
Vladislav
проблема Ionide что он он подсветку делает на тонне правил регекспа
Ȋ̫̻͔̉͋͋̎O̸̰N̻̱͓̲͑ͧ̅̎I̮̬̠̯̞͔̅D͕̟̰̰̬̲͗̍ͅĘ̼̺͛ ͋ͨ ̀ͣ ̵̹̹̖͖̠͕͓̆ ̙̭̖̏͂Ḥ̤̙̫̣̏͊̔E͓͂̀͢ ͖͔̺̞͎̱̅͛̈́͟C̜͗͌̈O̷̩̲͙M͇̺̪̩̮̰͙ͤ͆̂̈́̐E̱ͣ̎͢S̞̽̒ͮ̋̒̚
Dr. Friedrich
это хромиум
Нет, это таки кэши
Vladislav
ну в плане если ты солюшн хромиума открыл то столько каши будет
Dr. Friedrich
А, ну да, там так и написано :)