UTNianos

Versión completa: [Ayuda][Paradigmas] Type y Data Funcional
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Buenas gentes tengo una duda, estyo haciendo el Tp de Funcional y me tira este error y no en tiendo porque


type Nombre = String
type Habilidad = String
type Fuerza = Int
type Pertenencia = Barbaro -> Barbaro
data Barbaro = Barbaro Nombre Fuerza [Habilidad] [Pertenencia] deriving Show

--1
espadas Barbaro Nombre Fuerza [Habilidad] [Pertenencia] Peso = Barbaro Nombre (Fuerza+(2*Peso)) [Habilidad] [Pertenencia]



el error que me tira es este
Cita:tp funcional .hs:9:17: Not in scope: data constructor ‘Nombre’

tp funcional .hs:9:24: Not in scope: data constructor ‘Fuerza’

tp funcional .hs:9:32: Not in scope: data constructor ‘Habilidad’

tp funcional .hs:9:44: Not in scope: data constructor ‘Pertenencia’

tp funcional .hs:9:57: Not in scope: data constructor ‘Peso’

tp funcional .hs:9:72: Not in scope: data constructor ‘Nombre’

tp funcional .hs:9:80: Not in scope: data constructor ‘Fuerza’

tp funcional .hs:9:90: Not in scope: data constructor ‘Peso’

tp funcional .hs:9:98: Not in scope: data constructor ‘Habilidad’

tp funcional .hs:9:110:
Not in scope: data constructor ‘Pertenencia’

Si alguno puede orientarme mas que agradecido
Para utilizar pattern-matching sobre tipos de datos contruidos tenés que englobarlo en paréntesis, la sintaxis es la siguiente:


espadas (Barbaro nombre fuerza habilidades pertenencias peso) = Barbaro nombre (fuerza +(2*peso)) habilidades pertenencias peso


Fijate que lo único que necesitas es aclarar el constructor del tipo que querés deconstruir. Luego, nombras a los "atributos" del Bárbaro como variables y las usás tranquilamente.

Un ejemplo más claro son las listas: las listas se construyen de 2 maneras, usando corchetes [ ] o usando el concatenador :. Luego, usando variables podemos definir la cabeza y cola. Ej: [x].
URLs de referencia