Forth

Forth

Difícil

Instrucciones

Implementa un evaluador para un subconjunto muy simple de Forth.

Forth es un lenguaje de programación basado en pila. Implementa un evaluador muy básico para un subconjunto pequeño de Forth.

Tu evaluador debe admitir las siguientes palabras:

  • +, -, *, / (aritmética de enteros)
  • DUP, DROP, SWAP, OVER (manipulación de la pila)

Tu evaluador también debe admitir la definición de nuevas palabras usando la sintaxis habitual: : word-name definition ;.

Para simplificar, el único tipo de dato que necesitas admitir son enteros con signo de al menos 16 bits.

Debes usar las siguientes reglas para la sintaxis: un número es una secuencia de uno o más dígitos (ASCII), y una palabra es una secuencia de una o más letras, dígitos, símbolos o signos de puntuación que no sea un número. (Es probable que Forth use reglas un poco diferentes, pero esto se acerca lo suficiente).

Las palabras no distinguen entre mayúsculas y minúsculas.

Pistas

Para completar este ejercicio, necesitas crear el tipo de datos ForthState e implementar las siguientes funciones:

  • emptyState devuelve un ForthState vacío.
  • evalText evalúa un argumento de tipo Text y devuelve el nuevo estado.
  • toList devuelve la pila actual como una lista, donde el elemento que está en la parte superior de la pila es el elemento más a la derecha (el último).

Encontrarás una declaración de datos ficticia y las firmas de tipo ya en su lugar, pero depende de ti definir las funciones y crear un tipo de datos, un newtype o un sinónimo de tipo que tenga sentido.

Editar en GitHub El enlace se abre en una ventana o una pestaña nuevas
Haskell Exercism

¿Todo listo para empezar Forth?

Regístrate en Exercism para aprender y dominar Haskell con 107 ejercicios y mentoría humana real, todo gratis.