Golftipps in Cheddar

12

Cheddar

Cheddar ist eine hochentwickelte , funktional + objektorientierte Programmiersprache, die von unserem Benutzer Downgoat entwickelt wurde, um die Programmierung einfacher, schneller und intuitiver zu gestalten.

Welche allgemeinen Tipps haben Sie zum Golfen in Cheddar? Ich bin auf der Suche nach Ideen, die sich auf Probleme anwenden lassen und die zumindest etwas spezifisch für Cheddar sind (z. B. "Unnötige Leerzeichen entfernen" ist keine Antwort).

Undichte Nonne
quelle

Antworten:

3

Verwenden Sie funktionalisierte Eigenschaften

Wenn Sie jemals nur eine Eigenschaft in einer Funktion verwenden:

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

Sie können funktionalisierte Eigenschaften verwenden, um einige Bytes zu speichern:

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

Sie können die Variable in der funktionalisierten Eigenschaft mit referenzieren $0.

Downgoat
quelle
2

Verwenden Sie den String-Operator für String-Sequenzen

Ich spreche von dem @"Operator, der verschiedene Dinge tut, die sich alle mit Strings befassen. Dies hat ziemlich viele Verwendungszwecke, aber dies ist einer meiner bevorzugten Verwendungszwecke:

Schau dir das an:

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

nicht so nützlich, aber das Gegenteil ist:

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

Dies ist besonders nützlich, um das Alphabet zu generieren :

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

Curry

Nein, nicht rotes Curry (über welches andere Curry würdest du nachdenken?). Ich meine diese Art von Curry:

a->b->

Wenn Sie eine Funktion mit zwei Argumenten haben. Curry ist kürzer als Nicht-Curry:

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

Hinweis: Dies ist nur kürzer, wenn Sie genau zwei Argumente haben.

Downgoat
quelle
1

Verwenden Sie Standardargumente

Das Deklarieren von Cheddar-Variablen kann ziemlich viel Zeit in Anspruch nehmen:

->{var a=b+1}

Zum Glück können Sie (ab) Funktionsstandardwerte zum Erstellen von Variablen verwenden:

b=a+1->b

Hier einige Anwendungsbeispiele:

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

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

Verwenden Sie funktionalisierte Operatoren und Bonding

Dies ist eine einfache. Wenn Sie etwas haben wie:

i->1+i

oder eine ähnliche Operation. Sie können mit funktionalisierten Operatoren + Bonden verkürzen:

1&(+)
Downgoat
quelle
1

Verwenden Sie den Mapping-Operator

Die =>Zuordnung von LHS zu RHS bedeutet aufgrund der Rangfolge auch, dass Sie es mit Bereichen verwenden und mehrfach verwenden können:

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

Zusätzlich:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
Downgoat
quelle