Sto pensando di scrivere un GolfScript migliorato per programmi ancora più brevi che possono fare più cose. Questa non è una sfida; è una richiesta di feedback e suggerimenti su cosa dovrei fare. (vedi tag)
Non sono sicuro se questo dovrebbe essere Community Wiki. Se la pensi così, basta contrassegnare un moderatore per convertirlo :)
Questo linguaggio sarà molto simile a GolfScript. È ancora scritto in Ruby. Tuttavia, ha alcune differenze:
- Usando
`
come delimitatore di stringa, perché è un carattere non comune, quindi sarà necessario meno escape. (Un altro personaggio può sostituire la sua funzione, come#
(ne parleremo più avanti)).\`
per sfuggire a un backtick,\\
per sfuggire a una backslash e non ci sono altre sequenze di escape. Se hai bisogno di una nuova riga, inserisci semplicemente una nuova riga letterale nella stringa. - Utilizzo di Ruby
Rational
per la precisione arbitraria in virgola mobile, uno dei principali difetti di GolfScript. - La possibilità di convertire i tipi in altri tipi. Ad esempio, è possibile convertire un blocco in una stringa.
- Espressioni regolari. Probabilmente creato con
"..."
. Gli operatori saranno sovraccaricati anche per loro. Ad esempio"\W"~{`Invalid: non-word character`}{`OK`}if
,. Si eseguirà automaticamente quando viene spinto da una variabile, come i blocchi. - Oggetti File e Date, per fare più cose impossibili in GolfScript. Questi non avranno valori letterali, ma avranno funzioni per inizializzarli, come
`file.txt`fl
(il nome della funzione di creazione dei file può cambiare). - Hash forse, ma non ne sono sicuro. Dovrei?
- Funzioni di supporto per fare ancora di più. Ad esempio,
`http://example.com`net
per l'accesso alla rete (di nuovo, l'net
operatore può essere rinominato).rb
per eseguire una stringa come codice Ruby. Ce ne saranno molti altri; suggerimenti benvenuti. - Nessun commento, in modo che
#
possa essere utilizzato per qualcos'altro. Se vuoi un commento,`comment here`;
funzionerà bene. (Forse#
può sostituire`
la funzione) - Sarà completamente riscritto in modo che sia molto più semplice aggiungere funzioni. Fondamentalmente, il codice sarà più leggibile. (Hai visto l'origine GolfScript?
:/
) - Sarà su Github in modo da poter lavorare in modo collaborativo. Lo autorizzerò in base al MIT o qualcosa del genere.
- Nessuna nuova riga finale, quindi i quines economici funzionano: P
E li distinguo perché penso che siano i cambiamenti più drastici e utili (tranne forse l'aggiunta di virgola mobile):
- Avrà molte funzioni di Ruby integrate. Ad esempio,
shuffle
(che può essere abbreviato insf
) (in precedenza aveva assunto 9 caratteri ),tr
(in precedenza 14 caratteri ),sample
(sm
, in precedenza.,rand=
),flatten
(fl
, in precedenza ???), ecc. - Sarà schiacciato, come Rebmu. Ad esempio, ora è possibile eseguire
~:a0<{0a-}aIF
(utilizzando un nome di variabile lettera) anziché~:$0<{0$-}$if
(sovrascrivere la funzione di ordinamento). (esempio da qui ). Si noti che in questo modo non fa distinzione tra maiuscole e minuscole e i numeri non sono consentiti nei nomi delle variabili. Questo va bene secondo me dal momento che è un linguaggio da golf: P - Avrà il debug. Aggiungerò la possibilità di fornire un flag specificando i delimitatori di array, i delimitatori di elementi, ecc., L'output numerico (razionale, float o int?), Esaminando le istruzioni una alla volta, tokenizzando e producendo ciascun token invece di eseguire il programma, eccetera.
Quindi, la mia domanda è: cosa c'è da migliorare? Cosa pensi che dovrei aggiungere?
Altre idee per questo, prima di iniziare a codificarlo?