Planuję napisać ulepszony GolfScript dla jeszcze krótszych programów, które mogą robić więcej rzeczy. To nie jest wyzwanie; jest to prośba o opinie i porady dotyczące tego, co powinienem zrobić. (patrz tagi)
Nie jestem pewien, czy powinna to być Wiki społeczności. Jeśli tak uważasz, po prostu oznacz moderatora, aby go przekonwertował :)
Ten język będzie bardzo podobny do GolfScript. Wciąż jest napisany w Ruby. Ma jednak kilka różnic:
- Użycie
`
jako ogranicznika łańcucha, ponieważ jest to rzadki znak, więc mniej ucieczki będzie potrzebne. (Inny znak może zastąpić swoją funkcję, np.#
(Więcej na ten temat później)).\`
uciec\\
przed ukośnikiem, uciec przed ukośnikiem i nie ma innych sekwencji ucieczki. Jeśli potrzebujesz nowej linii, po prostu przyklej prawdziwą nową literę do łańcucha. - Użycie Ruby'ego
Rational
do dowolnej zmiennoprzecinkowej precyzji, jedna z głównych wad GolfScript. - Możliwość konwersji typów na inne typy. Na przykład możesz przekonwertować blok na ciąg.
- Wyrażenia regularne. Prawdopodobnie stworzony z
"..."
. Operatorzy również zostaną dla nich przeciążeni. Na przykład"\W"~{`Invalid: non-word character`}{`OK`}if
. Wykona się automatycznie po wypchnięciu ze zmiennej, takiej jak bloki. - Obiekty File i Date, aby wykonać więcej rzeczy, które były niemożliwe w GolfScript. Nie będą miały literałów, ale będą miały funkcje inicjujące je, takie jak
`file.txt`fl
(nazwa funkcji tworzenia plików może ulec zmianie). - Może hashe, ale nie jestem tego pewien. Czy powinienem?
- Funkcje pomocnicze pozwalają zrobić jeszcze więcej. Na przykład w
`http://example.com`net
celu uzyskania dostępu do sieci (ponownienet
nazwa operatora może zostać zmieniona).rb
wykonać ciąg jako kod Ruby. Będzie ich o wiele więcej; sugestie mile widziane. - Brak komentarzy, więc
#
można to wykorzystać do czegoś innego. Jeśli chcesz komentarza,`comment here`;
będzie dobrze. (Może#
może zastąpić`
funkcję) - Zostanie całkowicie przepisany w taki sposób, że znacznie łatwiej będzie dodać funkcje. Zasadniczo kod będzie bardziej czytelny. (Czy widziałeś źródło GolfScript?
:/
) - Będzie na Githubie, aby można było nad nim wspólnie pracować. Zezwolę na licencję na MIT lub coś takiego.
- Brak ostatecznej nowej linii, więc oszukiwane quiny działają: P
Rozróżniam je, ponieważ uważam, że są to najbardziej drastyczne i pomocne zmiany (z wyjątkiem może dodania zmiennoprzecinkowego):
- Będzie miał wiele wbudowanych funkcji Ruby. Na przykład
shuffle
(który może być skróconysf
) (poprzednio miał 9 znaków ),tr
(poprzednio 14 znaków ),sample
(sm
poprzednio.,rand=
),flatten
(fl
poprzednio ???) itd. - Będzie muskularny, jak Rebmu. Na przykład teraz możesz to zrobić
~:a0<{0a-}aIF
(używając nazwy zmiennej literowej) zamiast~:$0<{0$-}$if
(nadpisując funkcję sortowania). (przykład stąd ). Zauważ, że w ten sposób wielkość liter nie jest rozróżniana, a liczby nie są dozwolone w nazwach zmiennych. Moim zdaniem jest to w porządku, ponieważ jest to język golfowy: P - Będzie miał debugowanie. Dodam możliwość dostarczenia flagi określającej ograniczniki tablicowe, ograniczniki elementów itp., Dane wyjściowe liczbowe (wymierne, zmiennoprzecinkowe lub int?), Krok po kroku wykonując instrukcje pojedynczo, tokenizując i wysyłając każdy token zamiast uruchamiania programu, itp.
Moje pytanie brzmi: co można poprawić? Jak myślisz, co powinienem dodać?
Jakieś inne pomysły na to, zanim zacznę go kodować?