es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Función Haskell que devuelve su entrada.

Actualmente estoy escribiendo una función para substitución (Cálculo Lambda) basada en Haskell.

data Term = Var String 
          | Application Term Term
          | Lambda String Term

La función recibe un Term t1, un String s y un Term t2. La función debe reemplazar cada ocurrencia de s en t1 con t2.

subst :: Term -> String -> Term -> Term
subst (Lambda y e) x v = if x == y then (Lambda y e) else let e' = (subst e x v) in (Lambda y e')
subst (Var y) x v = if x == y then v else (Var y)
subst (Application e1 e2) x v = Application (subst e1 x v) (subst e2 x v)

Cuando intento llamar a la función, recibo lo siguiente:

Entrada

subst (Lambda "x" (Application (Var "x") (Var "y"))) "y" (Var "f")

Salida

subst (Lambda "x" (Application (Var "x") (Var "y"))) "y" (Var "f")
  :: Term

¿Estoy cometiendo un error en la entrada o hay un problema con mi función?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Parece que no hay ningún problema con tu función, ya que está mostrando correctamente el resultado con el tipo Term correcto. Sin embargo, es posible que desees verificar que la salida sea lo que esperas en términos de la sustitución de y por f en la expresión lambda. Revisar nuevamente tu sustitución prevista puede revelar cualquier problema que puedas tener.

Comments are closed.