Size: a a a

2020 November 09

VZ

Vlad Zaa in F# Chat
Кстати интересно, надо пойти посмотреть как это компилируется. Можно было бы наверное не аллоцировать FSharpFunc
источник

AH

Ayrat Hudaygulov in F# Chat
Vlad Zaa
Кстати интересно, надо пойти посмотреть как это компилируется. Можно было бы наверное не аллоцировать FSharpFunc
А он создаёт делегат потому что думает что тут есть кложуры хитрые (а их нет)
источник

AH

Ayrat Hudaygulov in F# Chat
вот да, тут есть место для оптимизации
источник

VZ

Vlad Zaa in F# Chat
Да, я про это примерно и подумал
источник

AH

Ayrat Hudaygulov in F# Chat
сайд эффект есть, а кложуры нет
источник

AH

Ayrat Hudaygulov in F# Chat
но данный паттерн вообще часть для мемоизации применяют

let foo =
 let cache = ...
 let args ->
    // use cache
источник

AH

Ayrat Hudaygulov in F# Chat
то есть там СКОРЕЕ всего кложуры будут
источник

VZ

Vlad Zaa in F# Chat
Мы хотим запилить Static local functions. Может как раз получится такие вот "кложуры", которые ничего не захыватывают, оптимизить в них и потом как раз выносить сайдэффект, и кложур класть в статик метод
источник

VS

Vasily Shapenko in F# Chat
Вот хочется поправить @vl_za . Функция без аргументов - тоже функция. Просто она мемоизируется жи
источник

VS

Vasily Shapenko in F# Chat
И, насколько я помню, в f# предполагается, что у функции или 0, или 1 аргумент
источник

PD

Prunkles Dreemurr in F# Chat
Vlad Zaa
Какая сигнатура будет у ReadInt?
Ну, кстати, если не ошибаюсь, то в некоторых случаях для let f = fun x -> x + 1 сиганутра будет (int -> int)  (со скобками), тогда как у let f x = x + 1 будет int -> int (без скобок)
источник

YT

Yogurt The Horse in F# Chat
Prunkles Dreemurr
Ну, кстати, если не ошибаюсь, то в некоторых случаях для let f = fun x -> x + 1 сиганутра будет (int -> int)  (со скобками), тогда как у let f x = x + 1 будет int -> int (без скобок)
а в чем разница?
источник

RM

Roman Melnikov in F# Chat
Michael Snytko
никак я не въеду в этот unit
void обычный
источник

PD

Prunkles Dreemurr in F# Chat
Вот, это происходит, если у функции ещё и тело есть, то есть если она не сразу возвращает fun
источник

PD

Prunkles Dreemurr in F# Chat
Yogurt The Horse
а в чем разница?
На что-то да влияет
источник

RM

Roman Melnikov in F# Chat
Roman
мне кстати так гораздо больше нравится сигнатуры указывать. Типа
let toCustomerOrder: RootOrder * ProductItems -> CustomerOrder option
приятней, чем каждый параметр в скобочки обрамлять
Кстати, да, но хз можно ли так сделать чтоб старое поведение осталось
источник

PD

Prunkles Dreemurr in F# Chat
Yogurt The Horse
а в чем разница?
Точно могу сказать, что пропадает информация об именах аргументов, что иногда неприятно
источник

RM

Roman Melnikov in F# Chat
Prunkles Dreemurr
На что-то да влияет
Ни на что в данном случае
источник

PD

Prunkles Dreemurr in F# Chat
А ещё в том, что f2 уже точно хранится как FSharpFunc , тогда как f1 превращается в обычную функцию (sharplab)
источник

RM

Roman Melnikov in F# Chat
Yogurt The Horse
а в чем разница?
Показывает, что принятое значение.
Не более, скобки в сигнатуре работают группировкой.
Сигнатура seq.map
'a seq -> ( a' -> 'b) -> 'b seq
Тут скобки показывают, что параметром ожидается ф-ция
источник