Спецификация языка F# обновилась:
HTMLPDFПросматриваю методом случайного тыка, наткнулся на такие фишки:
6.5.7 Slice ExpressionsИлья Ермаков как-то восхищался этими самыми slice'ами в языке Go, вот никак не могу понять, что такого в этой фишке? Отрезки массива, что ли? Так в "Адском программировании" это ещё описывалось:
А.Гавва писал(а):
4.1.5 Отрезки (array slices)
Для одномерных массивов Ада предусматривает удобную возможность указания нескольких последовательных компонент массива. Такая последовательность компонент массива называется отрезком массива (array slice).
В F#, правда, эти отрезки можно делать не только для одномерных массивов, но и для двумерных тоже. А как там у вас в Go?
6.5.8 Member Constraint Invocation ExpressionsОграничения на типы параметров функций, внешне похоже на утиную типизацию:
Код:
For example
let inline speak (a: ^a) =
let x = (^a : (member Speak: unit -> string) (a))
printfn "It said: %s" x
let y = (^a : (member MakeNoise: unit -> string) (a))
printfn "Then it went: %s" y
type Duck() =
member x.Speak() = "I'm a duck"
member x.MakeNoise() = "quack"
type Dog() =
member x.Speak() = "I'm a dog"
member x.MakeNoise() = "grrrr"
let x = new Duck()
let y = new Dog()
speak x
speak y
Outputs:
It said: I'm a duck
Then it went: quack
It said: I'm a dog
Then it went: grrrr