Vladimir
вот такой код есть
Vladimir
я не могу сделать let myF = getJObjectValue resultNode, ResolvedQuery это стринг, а Score это флоут
Roman
пц ты картинку конечно вставил
Roman
текстом бы уж бахнул)
Vladimir
да без разницы) ResolvedQuery = getJObjectValue resultNode "resolved_query" Score = getJObjectValue resultNode "score"
Vladimir
короче приходится копировать
Vladimir
ну в том то и дело, myF должна быть дженерик, а нельзя дженерик ей указать в параметре явно
Vasily
У меня есть такая магия
Vasily
let inline request< ^TRequest, ^TResponse when ^TRequest: (static member encode: ^TRequest -> seq<byte>) and ^TResponse: (static member decode: Seg -> ^TResponse)> (constructors: seq<int32>) (req: ^TRequest) :Async<Result< ^TResponse,ChannelError>> = async { let onGet msg: ^TResponse = deserialize msg.RawData return! onGet |> sendRequest req (constructors |> withError) }
Vasily
применяешь так: let a:t = request.....
Vladimir
Делай myF интерфейсом с дженерик методом
myF должнать быть дженерик функция с частично примененным первым параметром
Vasily
Т.е. просто в let делаешь явное указание типа
Vasily
И компилятор все выводит
Vladimir
И компилятор все выводит
прекрасно выводит)
Doge
myF должнать быть дженерик функция с частично примененным первым параметром
Ты этого не сделаешь для функций без Rank2, а его в ф шарпе нету
Doge
Если я правильно понял то, что ты хочешь получить
Vladimir
я хочу чтобы когда я в дженерик функцию частично применил параметр который не дженерик, оставшася функция тоже осталась дженерик, а она уже не остается
Doge
Хотя я может соврал насчёт Rank-2
Vladimir
да вот пример который только что давал) let myF (a: int) b = b let f1 = myF 1 f1 "" f1 1 не работает
Roman
если ты хочешь забайндить в модуле, то да, получишь валуева
Roman
Но если локально клепаешь, например, в теле метода, то должно быть норм
Vladimir
тут нету валуе рестрикшна, просто тип выводится не дженерик
Roman
хотя
Vladimir
да, я тоже соврал) тут все же value restriction
Doge
В хаскеле такое работает запросто: wtf :: a -> b -> b wtf _ = id wat = wtf 1 wat 1 wat "asd"
Roman
да, я тоже соврал) тут все же value restriction
это собсно пушто у тебя вэлью не может быть женерик, даже если твое вэлью — лямбда
Roman
если ты просто добавишь воды еще один параметр, то все получится
Roman
в жаве такой проблемы нет, пушто там нормальные женерики
Roman
тф.жпг
Roman
ну вот так. Сорян
Vladimir
let myF a b = let x = b b x - дженерик вэлью
Roman
но оно не в модуле
Vladimir
так и пример выше был не в модуле, а внутри функции
Vladimir
хз как точно правило выразить)
Vladimir
let myF2 () = let myF a b = b let f1 = myF 1 // f1 "" // f1 1 f1 так f1 работает как дженерик, если раскомментить то уже не дженерик и не работает)
Nuxs🏴‍☠️
Nuxs🏴‍☠️
Romɑn
Господа, Вдруг это кому важно. Я в Москве до 11 июля. Если у кого есть необходимость или даже желание увидеться, то давайте соберёмся
Romɑn
Пиню используя служебное положение
Vladislav
Вирус
Dr. Friedrich
Это Factorio?
Romɑn
Нормальная гама
Romɑn
Это Factorio?
Как-то иначе на андроид зовётся
Romɑn
Нувот.
Англосаксов не касается
Romɑn
Даже если они из самары
Vladislav
Боюсь он к англосаксам отношения не имеет
Hog
Боюсь он к англосаксам отношения не имеет
Нувот. Взяли и опустили сразу
Romɑn
Ты его видел? Гоша чистокровный уроженец Ливерпуля, просто родом из России
Romɑn
- Гоша, скажи, лорри или тракс? - Трокс!
Hog
Фокин
Romɑn
Задолбал своим кокни, говори на русском
Romɑn
:D
Romɑn
Dr. Friedrich
О, точно. Неплохая игра.
Крылатый
Mindustry
Круть!
Nuxs🏴‍☠️
Это Factorio?
Только на минималках
habib
да вот пример который только что давал) let myF (a: int) b = b let f1 = myF 1 f1 "" f1 1 не работает
let myF<'b> (a: int) (b: 'b) = b let myG<'b> = myF<'b> 1 let x = myG "" let y = myG 10 @Lanayx
habib
так?
Igor
Все еще идет, можно послушать Нолана (один из авторов clojurescript)
Igor
https://zoom.us/j/94969377957?pwd=YnlYbzl1M0RMYk9DZlcxek5FR2JYZz09 - Заходите с Дэвидом Ноланом поговорить
Igor
Закончилось, но имхо было круто - Девида Нолана всегда приятно послушать
habib
да, не рабатает
Vladimir
Пульсаровцы решили последовать за фп модой и заюзать трипл
Vladislav
а в райдере можно путь до фшарп компилятора указать?
Aleksandr
Как вариант, можно сделать локальную копию сдк и поменять переменную среды DOTNET_ROOT из dotnet cli
Aleksandr
Я сомневаюсь, что райдер использует fsc.exe напрямую, не представляю как
Dr. Friedrich
а в райдере можно путь до фшарп компилятора указать?
Райдер компилирует проекты при помощи MSBuild. Если ты знаешь, как задать путь к компилятору там, то делай в Райдере так же.
Андрей
Пульсаровцы решили последовать за фп модой и заюзать трипл
ещё квадрупль заюзают, и ими заинтересуется пентагон ))
Vladimir
это напомнило меня лет пять назад) я тогда тоже пытался по максимуму туплы заюзать, потому что ну есть же такая фича в языке, хз правда зачем, но видно создателям языка виднее)
Dr. Friedrich
это напомнило меня лет пять назад) я тогда тоже пытался по максимуму туплы заюзать, потому что ну есть же такая фича в языке, хз правда зачем, но видно создателям языка виднее)
В современном эфшорпе пять раз подумаешь, прежде чем начнёшь юзать вербозные struct tuples. Уж не знаю, хорошо это или плохо.
Ayrat
а в райдере можно путь до фшарп компилятора указать?
Есть проперти в МС билде. FscToolPath FscToolExe