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
Rationaldo 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`netcelu uzyskania dostępu do sieci (ponownienetnazwa operatora może zostać zmieniona).rbwykonać 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(smpoprzednio.,rand=),flatten(flpoprzednio ???) 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ć?