Советы по игре в гольф в Чеддере


12

чеддер

Cheddar - это высокоуровневый, функциональный + объектно-ориентированный язык программирования, созданный нашим пользователем Downgoat, разработанный для того, чтобы сделать программирование проще, быстрее и интуитивно понятнее.

Какие общие советы у вас есть для игры в гольф в Чеддер? Я ищу идеи, которые могут быть применены к задачам и которые, по крайней мере, несколько специфичны для Чеддера (например, «Удалить ненужные пробелы». Это не ответ).

Ответы:


3

Используйте функционализированные свойства

Если вы когда-либо используете только свойство в функции:

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

Вы можете использовать функционализированные свойства для сохранения некоторых байтов:

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

Вы можете ссылаться на переменную в функционализированном свойстве с помощью $0.


2

Используйте строковый оператор для строковых последовательностей

Я говорю об @"операторе, который делает разные вещи, все из которых имеют дело со строками. Это имеет довольно много применений, но это одно из моих любимых применений:

Взгляните на это:

@" [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->

Если у вас есть функция, принимающая два аргумента. Короче карри, чем нет

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

Примечание: это только короче, когда у вас есть ровно два аргумента.


1

Используйте аргументы по умолчанию

Объявление переменных Cheddar может быть довольно бесполезным:

->{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

Используйте оператор отображения

=>Карты LHS в RHS, из - за его старшинства, это также означает , что вы можете использовать его с диапазонами и использовать его несколько раз:

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

Дополнительно:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.