チェダーでのゴルフのヒント


12

チェダー

Cheddarは、プログラミングを簡単、高速、直感的に行えるように設計された、ユーザーDowngoatによって作成された高レベルの機能的+オブジェクト指向プログラミング言語です。

チェダーでゴルフをするための一般的なヒントは何ですか?私は問題に適用できるアイデアを探していますが、少なくともチェダー特有のアイデアも探しています(たとえば、「不要な空白を削除する」は答えではありません)。

回答:


3

機能化されたプロパティを使用する

関数でプロパティのみを使用する場合:

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

関数化されたプロパティを使用して、いくつかのバイトを保存できます。

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

関数化されたプロパティの変数を参照するには、を使用します$0


2

文字列シーケンスに文字列演算子を使用します

@"はさまざまなことを行う演算子について話しています。それらはすべて文字列を処理します。これにはかなりの用途がありますが、これは私のお気に入りの用途の1つです。

これをみて:

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

それほど便利ではありませんが、逆は次のとおりです。

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

これは、アルファベット生成するのに特に便利です:

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

1

カレー

レッドカレーではありません(¬_¬について他にどんなカレーを考えていますか)。私はこのタイプのカレーを意味します:

a->b->

2つの引数を取る関数がある場合。カレーをしないほうがカレーのほうが短い:

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

注:これは、引数が2つだけの場合にのみ短くなります。


1

デフォルト引数を使用

チェダー変数を宣言することは、バイトを浪費することになります。

->{var a=b+1}

幸いなことに、変数を作成するために関数のデフォルト値を(ab)使用できます:

b=a+1->b

以下に使用例を示します。

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

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

1

機能化された演算子と結合の使用

これは単純なものです。次のようなものがある場合:

i->1+i

または同様の操作。関数化された演算子+結合を使用して短縮できます:

1&(+)

1

マッピング演算子を使用する

=>これはまた、あなたが複数回の範囲で使用し、それを使用することができることを意味し、原因それの優先度に、RHSにLHSをマップします。

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

さらに:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.