Size: a a a

2021 June 20

M

Michael in F# Chat
Ладно, специфический код
источник

VP

Vladislav Prekel in F# Chat
Как называется функция, принимающая 0 аргументов?
источник

HK

Henry Kovalevsky in F# Chat
В F# таких не бывает. Возможно, тебя интересует функция, которая принимает значение unit.
источник

VP

Vladislav Prekel in F# Chat
А как же Set.empty?
источник

VP

Vladislav Prekel in F# Chat
Или такое
источник

HK

Henry Kovalevsky in F# Chat
Это не функция, а экземпляр пустого set'а.
Если я не ошибаюсь, это Set.empty — это статическое поле, которое инициализируется единожды таким экземпляром, чтобы не делать лишних аллокаций.
источник

VP

Vladislav Prekel in F# Chat
А как оно тогда возвращает сет нужного типа?
источник

HK

Henry Kovalevsky in F# Chat
А это просто статическое свойство. Но выглядит хитро за счёт геттера, да:
let inline unimplemented<'T> = Unimplemented<'T>.get_Unimplemented()
источник

HK

Henry Kovalevsky in F# Chat
Оно не возвращает, это просто обращение до экземпляра.
источник

HK

Henry Kovalevsky in F# Chat
Мол, ты же не возвращаешь ничего в таком примере:
let i = 1
источник

HK

Henry Kovalevsky in F# Chat
let s = Set.empty
источник

VP

Vladislav Prekel in F# Chat
let a : Set<int> =  Set.empty
let b : Set<float> =  Set.empty

a и b не могут быть одинаковыми
источник

VP

Vladislav Prekel in F# Chat
Вообщем, там тоже статическое свойство
источник

HK

Henry Kovalevsky in F# Chat
Для каждого типа там будет один и тот же инстанс.
источник

HK

Henry Kovalevsky in F# Chat
источник

VP

Vladislav Prekel in F# Chat
А, да. Но оно обёрнуто в статическое свойство которое потом в функцию, которая ведёт себя как свойство (568 и 793 строки)
https://github.com/fsharp/fsharp/blob/d6244d4a1b7bc4efce42bc050ad08384cdce0320/src/fsharp/FSharp.Core/set.fs#L568
https://github.com/fsharp/fsharp/blob/d6244d4a1b7bc4efce42bc050ad08384cdce0320/src/fsharp/FSharp.Core/set.fs#L793
источник

I

IdiocyAcceptance in F# Chat
В фарше таких нет, но если ты делаешь функцию, которая имеет дженерик параметр, го не имеет обычных, то фарш автоматически подразумевает что это unit -> 'a. При этом функция вызывается без параметра
источник

I

IdiocyAcceptance in F# Chat
Я даже не назвал бы это сахаром, скорее странной особенностью.
источник

Dv

Dr. Friedrich von Ne... in F# Chat
У этого даже специальное название было, но я его забыл.
источник

I

IdiocyAcceptance in F# Chat
Так работает Unchecked.defaultOf к примеру
источник