Наскоро започнах да се занимавам с F# (моят опит е C#) и чета сайта http://fsharpforfunandprofit.com, който намирам за много полезен .
Имам http://fsharpforfunandprofit.com/posts/defining-functions/, който е разделът за комбинаторите . Разбирам ги всички (въпреки че Y combinator или Sage bird прецакват ума ми!) с изключение на ветрушката. Скот Власчин дава определението (на F#) като:
let K x y = x
За живота си не мога да разбера нито една ситуация, в която това би било полезно. Първо си помислих, че може да се използва като верижен оператор, така че да можете да подадете стойност към функция и след това да върнете първоначалната стойност. Самият аз съм писал такъв оператор преди, но както виждате, не е същото:
let (>|) x f = f x; x
Ако частично приложим K комбинатора (със стойност 5), тогава получаваме обратно функция, която игнорира своя аргумент и вместо това връща 5. Отново не е полезно.
(K 5) = fun y -> 5
Може ли някой да ми даде лесен пример за това къде може да се използва това, моля?
K
^^ - person Random Dev   schedule 01.10.2014K
например се използва за прилагане на неща като булеви стойности, кортежи, числа, ... в SKI изчислението (е, това е основен градивен елемент ;) ) - просто мислете за него като за вид проекция към първия компонент - person Random Dev   schedule 01.10.2014