You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Поскольку параметры в функции передаются без скобок, LINQ-вызов на LENS получится довольно громоздким и неудобным:
(((Enumerable.Range 1 100).Where x:int -> x > 10).Select x:int -> x * 2
В F# для этого используется оператор |>, и код выглядит так:
let data = Emumerable.Range 1 100
let res = data
|> IEnumerable.filter (fun x -> x > 10)
|> IEnumerable.map (fun x -> x * 2)
У нас же оператор |> сейчас используется для обратной цели - перед ним стоит функция, а после него - аргумент, не поместившийся на строку.
Возможно, есть смысл пересмотреть эту концепцию. Для передачи многих параметров в функцию использовать <|, а для передачи значения по цепочке функций использовать оператор |>? Тогда linq-вызов выглядел бы так:
var data = Enumerable.Range 1 100
let res = data
|> IEnumerable.Where x:int -> x > 10
|> IEnumerable.Select x:int -> x * 2
А передача - так:
var result = somefx
<| param1
<| param 2
The text was updated successfully, but these errors were encountered:
@ForNeVeR, думаю оставить эту фичу на попозже, когда основное ядро уже будет работать и можно будет понаворачивать дополнительных возможностей. Сложно будет модифицировать парсер для этого?
Если это можно описать в грамматике - это можно сделать и в парсере. Пока что я ровнёхонько однозначно "перевожу" Grammar.txt на F#, и не встретил каких-то невыразимых мест.
Возвращаясь к этому тикету, задумался о необходимости писать IEnumerable.Where. Ведь эту штуку можно и не писать - тип выражения автоматически сопоставится с возможными типами первых аргументов найденных Extension-методов.
По сути, операторы |> и <| нужны в первую очередь для изменения приоритета, позволяя избежать лишних скобок, но своего отдельного смысла не несут.
Кстати, может быть, заменить их на @><@? Или какие-то другие значки? Мне вертикальная черта что-то разонравилась :)
Поскольку параметры в функции передаются без скобок, LINQ-вызов на LENS получится довольно громоздким и неудобным:
В F# для этого используется оператор
|>
, и код выглядит так:У нас же оператор
|>
сейчас используется для обратной цели - перед ним стоит функция, а после него - аргумент, не поместившийся на строку.Возможно, есть смысл пересмотреть эту концепцию. Для передачи многих параметров в функцию использовать
<|
, а для передачи значения по цепочке функций использовать оператор|>
? Тогда linq-вызов выглядел бы так:А передача - так:
The text was updated successfully, but these errors were encountered: