Le k-Combinateur peut être implémenté comme ci-dessous et la mise en œuvre ne doit pas avoir d'effets secondaires.
const K = x => y => x;
3 Réponses :
Le problème avec Voici un « contexte typique »:. p>
K code> comme avec tous les combinateurs primitifs est que vous ne pouvez pas le considérer lui-même. combinators primitives sont les éléments fondamentaux de la programmation fonctionnelle. Vous avez besoin d'un contexte pour les regarder au travail. Le défi est de assimilez ce contexte, si vous êtes nouveau paradigme fonctionnel
Option code>. Les instances du
Option code> type sont comme des valeurs qui peuvent être
null code>, mais jamais jeter une erreur lorsqu'il est appliqué à une fonction: p>
f => o => Option.fold(x => Option.of(f(x))) (K(o)) (o)
Où est la fonction de condition préalable "précon"?
k Combinateur peut également être utilisé comme valeur de vérité, lors de l'utilisation de booléens codés à l'église. C'est à dire. SI-Test alors d'autre: si votre "si-test" renvoie K, alors "sinon" serait supprimé et "alors" serait exécuté. P>
sorte d'une question large, mais c'est bien, je l'aime bien.
Pour soutenir mon exemple, je vais mettre en œuvre ... P>
// id :: a -> a const id = x=> x // K :: a -> b -> a const K = x=> y=> x // add :: Number -> Number -> Number const add = x=> y=> y + x // reduce :: (a -> b) -> b -> [a] -> b const reduce = f=> y=> ([x,...xs])=> { if (x === undefined) return y else return reduce (f) (f (y) (x)) (xs) } // map :: (a -> b) -> [a] -> [b] const map = f=> reduce (xs=> x=> [...xs, f(x)]) ([]) // iterate :: Number -> (a -> a) -> a -> [a] const iterate = n=> f=> x=> n > 0 ? [x, ...iterate (n - 1) (f) (f(x))] : [] // abuild :: Number -> (Number -> a) -> [a] const abuild = n=> f=> map (f) (iterate (n) (add (1)) (0)) console.log(abuild (5) (id)) // => [0,1,2,3,4] console.log(abuild (5) (x=> x * x)) // => [0,1,4,9,16] console.log(abuild (5) (K('ha'))) // => ['ha','ha','ha','ha','ha']
J'aime les fonctions avec l'humour: D est k ("ha") code> rire avec ou à propos de quelqu'un ?!
C'est seulement un peu de perspicacité en moi! J'aime faire la lumière de toute situation ^ _ ^
Mais comment générer ["ha", "ha", "ha"] code> utile?
CS.StaCKExchange.com/Questions/55441/...
Il ressemble à la fonction CL Constanty qui est parfois utile parfois.
Dans les langues au curry, vous l'utiliseriez chaque fois que vous souhaitez qu'un rappel ignore le premier argument.