I seguenti suggerimenti sono per la racchetta :
Argomenti predefiniti
Particolarmente utile per la creazione di alias per nomi di funzioni lunghe che vengono spesso utilizzati.
Supponiamo che il golf ti permetta di scrivere una funzione che consuma l'argomento e supponi che devi usare reverse
molto. Inizierai con qualcosa come:
(λ(x) ... reverse ... reverse ... reverse ...
Puoi invece prendere un argomento aggiuntivo, con un nome più breve di reverse
, e impostare il suo valore predefinito su reverse
:
(λ(x[r reverse]) ... r ... r ... r ...
Inoltre, è utile se si dispone di una funzione di supporto che si utilizza in molti punti con alcuni degli stessi argomenti. Ricordare di riordinare gli argomenti nella funzione secondo necessità, in modo da poter utilizzare quanti più argomenti predefiniti possibili e rimuovere gli argomenti da più siti di chiamata.
match
Questo è un po 'più difficile da riassumere in un piccolo post, quindi leggi i documenti di Racket per questo. In poche parole, match
consente di estrarre elementi e sequenze di elementi in un certo ordine da un elenco e la sintassi quasiquote consente di ricucire insieme l'elenco mutilato:
(match (range 10)
[`(,xs ... 3 ,ys ... 6 ,zs ...)
`(,@(map f xs) 3 ,@(map f ys) 6 ,@(map f sz))]
...
Ti offre anche un modo semplice per lavorare con le espressioni regolari e successivamente eseguire ulteriori calcoli sui gruppi risultanti,
Di nome let
Vedi la sintassi denominata qui .let proc-id ...
Ciò consente di scrivere funzioni ricorsive che vengono chiamate immediatamente senza define
o effettivamente chiamare la funzione dopo averla definita.
Qualcosa di simile a:
(define (fib i)
(if (< i 2) i
(+ (fib (- i 1)) (fib (- i 2)))))
(fib 10)
può essere abbreviato in:
(let fib {[i 10]}
(if (< i 2) i
(+ (fib (- i 1)) (fib (- i 2)))))
Quest'ultimo è sciocco, ma finora non sono stato in grado di usare questo piccolo trucco:
(apply map list matrix)
prende una trasposizione matrix
, dove matrix
c'è un elenco rettangolare di elenchi, come '((1 2 3) (a b c))
.
Fammi sapere se questo si rivela utile.