Dicas para jogar golfe em Cheddar


12

Cheddar

O Cheddar é uma linguagem de programação funcional e orientada a objetos de alto nível, criada por nosso usuário Downgoat, projetada para tornar a programação mais fácil, rápida e intuitiva.

Que dicas gerais você tem para jogar golfe em Cheddar? Estou procurando idéias que possam ser aplicadas a problemas de e que também sejam pelo menos um pouco específicas do Cheddar (por exemplo, "Remover espaço em branco desnecessário". Não é uma resposta).

Respostas:


3

Usar propriedades funcionalizadas

Se você usar apenas uma propriedade em uma função:

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

Você pode usar propriedades funcionalizadas para salvar alguns bytes:

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

Você pode referenciar a variável na propriedade funcionalizada com $0.


2

Use o Operador de cordas para seqüências de cordas

Estou falando do @"operador que faz coisas diferentes, todas que lidam com strings. Isso tem muitos usos, mas esse é um dos meus usos favoritos:

Dê uma olhada neste:

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

não é tão útil, mas o oposto é:

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

Isso é especialmente útil para gerar o alfabeto :

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

1

Curry

Não, não curry vermelho (que outro curry você estaria pensando em ¬_¬). Quero dizer este tipo de curry:

a->b->

Se você tem uma função usando dois argumentos. É mais curto para curry do que não:

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

Nota: Isso é apenas mais curto quando você tem exatamente dois argumentos.


1

Use argumentos padrão

Declarar variáveis ​​do Cheddar pode ser um grande desperdício de bytes:

->{var a=b+1}

felizmente, você pode (ab) usar os valores padrão da função para criar variáveis:

b=a+1->b

Aqui estão alguns exemplos de usos:

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

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

1

Usar operadores e colagem funcionalizados

Este é simples. Se você tem algo como:

i->1+i

ou qualquer operação semelhante. Você pode reduzir usando operadores funcionalizados + ligação:

1&(+)

1

Use o operador de mapeamento

Os =>mapas LHS para RHS, devido à sua precedência, também significam que você pode usá-lo com intervalos e usá-lo várias vezes:

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

Além disso:

a=>f=>g           // This is equivilant to...
(a).map(f).map(g) // this
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.