Conseils pour jouer au golf à Cheddar


12

Cheddar

Cheddar est un langage de programmation de haut niveau, fonctionnel et orienté objet créé par notre utilisateur Downgoat, conçu pour rendre la programmation plus facile, plus rapide et plus intuitive.

Quels conseils généraux avez-vous pour jouer au golf à Cheddar? Je cherche des idées qui peuvent être appliquées aux problèmes de et qui sont également au moins quelque peu spécifiques à Cheddar (par exemple, "Supprimer les espaces inutiles." N'est pas une réponse).

Réponses:


3

Utiliser des propriétés fonctionnelles

Si vous n'utilisez jamais qu'une propriété dans une fonction:

A->A.long.property(n).foo.bar

Vous pouvez utiliser des propriétés fonctionnelles pour enregistrer certains octets:

@.long.property(n).foo.bar

Vous pouvez référencer la variable dans la propriété fonctionnalisée avec $0.


2

Utiliser l'opérateur de chaîne pour les séquences de chaînes

Je parle de l' @"opérateur qui fait des choses différentes, qui traitent toutes de chaînes. Cela a beaucoup d'utilisations mais c'est l'une de mes utilisations préférées:

Regarde ça:

@" [103, 111, 97, 116, 115] === "goats"

pas très utile mais le contraire est:

@"'goats' === [103, 111, 97, 116, 115]
'goats'.bytes // compare the above too

Ceci est particulièrement utile pour générer l'alphabet :

65@"90    // Uppercase Alphabet
97@"122   // Lowercase Alphabet
65@"90+97@"122 // Both cases
String.letters // Compare 97@"122 to this

1

Curry

Non pas du curry rouge (à quel autre curry pensez-vous ¬_¬). Je veux dire ce type de curry:

a->b->

Si vous avez une fonction prenant deux arguments. C'est plus court à cari qu'à pas:

(a,b)->
a->b->

Remarque: Ceci n'est plus court que lorsque vous avez exactement deux arguments.


1

Utiliser des arguments par défaut

La déclaration de variables Cheddar peut être tout à fait inutile:

->{var a=b+1}

heureusement, vous pouvez (ab) utiliser les valeurs par défaut de la fonction pour créer des variables:

b=a+1->b

Voici quelques exemples d'utilisations:

let f= (a,b=a+1)->b
f(5) // 6

let f= a=Math.rand()->a
f() // 0.8757450950797647

1

Utiliser des opérateurs fonctionnels et des liaisons

C'est simple. Si vous avez quelque chose comme:

i->1+i

ou toute opération similaire. Vous pouvez raccourcir en utilisant des opérateurs fonctionnels + liaison:

1&(+)

1

Utilisez l'opérateur de mappage

Les =>cartes LHS à RHS, en raison de sa priorité, cela signifie également que vous pouvez l'utiliser avec des plages et l'utiliser plusieurs fois:

a=>f
(a).map(f)

Aditionellement:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.