Forth

Forth

Difficile

Istruzioni

Implementa un valutatore per un sottoinsieme molto semplice di Forth.

Forth è un linguaggio di programmazione basato sullo stack. Implementa un valutatore di base per un piccolo sottoinsieme di Forth.

Il valutatore deve supportare le seguenti parole:

  • +, -, *, / (aritmetica con numeri interi)
  • DUP, DROP, SWAP, OVER (manipolazione dello stack)

Il valutatore deve anche supportare la definizione di nuove parole usando la sintassi abituale: : word-name definition ;.

Per mantenere le cose semplici, l'unico tipo di dato che devi supportare sono i numeri interi con segno di almeno 16 bit.

Per la sintassi, usa le seguenti regole: un numero è una sequenza di una o più cifre (ASCII), una parola è una sequenza di una o più lettere, cifre, simboli o segni di punteggiatura che non sia un numero. (Probabilmente Forth usa regole leggermente diverse, ma queste sono abbastanza vicine.)

Le parole non distinguono maiuscole e minuscole.

Suggerimenti

Per completare questo esercizio, devi creare il tipo di dato ForthState e implementare le seguenti funzioni:

  • emptyState restituisce un ForthState vuoto.
  • evalText valuta un Text di input, restituendo il nuovo stato.
  • toList restituisce la pila corrente come array, con l'elemento in cima alla pila che è l'elemento più a destra (l'ultimo).

Troverai una dichiarazione di dati fittizia e le firme dei tipi già presenti, ma sta a te definire le funzioni e creare un tipo di dato significativo, un newtype o un sinonimo di tipo.

Modifica tramite GitHub Il link si apre in una nuova finestra o scheda
Haskell Exercism

Vuoi iniziare Forth?

Iscriviti a Exercism per imparare e padroneggiare Haskell con 107 esercizi e il mentoring di persone reali, tutto gratis.