Donar $20 Donar $50 Donar $100 Donar mensualmente
 


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Consulta Ejercicio Haskell
Autor Mensaje
.-Fede-. Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 254
Agradecimientos dados: 68
Agradecimientos: 41 en 39 posts
Registro en: Nov 2011
Facebook
Mensaje: #1
Consulta Ejercicio Haskell Ejercicios Paradigmas de Programación
Buenas, hice el siguiente codigo:


type Nombre = String
type Agregado = String
type Sabor = String
type Azucar = Integer
type Sabores = (String,String)
type Banio = String

data Producto = Cafe Nombre Azucar|Gaseosa Sabor Azucar|Helado Sabores Banio|AguaMineral deriving Show

calorias :: Producto -> Integer
calorias (Cafe _ Azucar) = 3*Azucar
calorias (Gaseosa _ Azucar)= Azucar
calorias (Helado (s1,s2) Banio)|Banio == "Chocolate" && (s1=="Chocolate" || s2=="Chocolate") = 220 + 150
|otherwise = 220
calorias (AguaMineral) = 0


Me tira "not in scope data constructor 'Banio'" y "not in scope data constructor 'Azucar'"

Alguno tiene idea qué esta mal en el codigo?

Gracias =)
05-04-2014 21:27
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Red16 Sin conexión
Empleado de Fotocopiadora
Debugueándome a ver en qué l...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 31
Agradecimientos dados: 17
Agradecimientos: 17 en 7 posts
Registro en: Nov 2011
Mensaje: #2
RE: Consulta Ejercicio Haskell
Las mayúsculas de Azucar y Banio. Son las variables, así que van con minúscula.
Me pasó lo mismo, también estoy luchando con los _ de este tp.
05-04-2014 21:53
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Santi Aguito Sin conexión
Presidente del CEIT
Newtoniano
********

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 1.238
Agradecimientos dados: 229
Agradecimientos: 613 en 335 posts
Registro en: Oct 2012
Mensaje: #3
RE: Consulta Ejercicio Haskell
Link

Fijate en Note and Tips...igual es como dice Red16

Busca la excelencia, el éxito llegará
05-04-2014 22:02
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
.-Fede-. Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 254
Agradecimientos dados: 68
Agradecimientos: 41 en 39 posts
Registro en: Nov 2011
Facebook
Mensaje: #4
RE: Consulta Ejercicio Haskell
Gracias gente, ahi me salio. el codigo quedo asi:


type Nombre = String
type Agregado = String
type Sabor = String
type Azucar = Integer
type Sabores = (String, String)
type Banio = String

data Producto = Cafe Nombre Azucar| Gaseosa Sabor Azucar|Helado Sabores Banio|AguaMineral deriving Show

calorias :: Producto -> Integer

calorias (Cafe _ azucar) = 3*azucar
calorias (Gaseosa _ azucar)= azucar
calorias (Helado (s1,s2) banio)|banio=="chocolate" && (s1 == "chocolate" || s2=="chocolate") = 220+150
|otherwise = 220
calorias(AguaMineral)=0




Lei lo del link pero la verdad no termine de entender bien, los tipos de datos van en mayusculas, y el resto en minusculas no? por que entonces cuando defino Producto, Azucar y Banio van en mayusculas?
05-04-2014 22:39
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Red16 Sin conexión
Empleado de Fotocopiadora
Debugueándome a ver en qué l...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 31
Agradecimientos dados: 17
Agradecimientos: 17 en 7 posts
Registro en: Nov 2011
Mensaje: #5
RE: Consulta Ejercicio Haskell
No te sabría decir exactamente... lo que yo entendí a partir de lo que dijo la profesora fue que al declarar va todo en mayúsculas porque estás definiendo un "tipo". Cuando vas a usar los tipos, los usás a través de variables, y esas son las que van en minúscula.
Uno define los tipos como sinónimos, tranquilamente podrías hacer todo con String e Integer, pero para ganar en expresividad se le dan nombres sinónimos.
CREO que viene por ese lado...
05-04-2014 22:52
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Red16 recibio 1 Gracias por este post
.-Fede-. (06-04-2014)
.-Fede-. Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 254
Agradecimientos dados: 68
Agradecimientos: 41 en 39 posts
Registro en: Nov 2011
Facebook
Mensaje: #6
RE: Consulta Ejercicio Haskell
Si, lo pense y es por eso. Que boludo =P
Osea los tipos de datos van como mayusculas y yo use sinonimos, pero azucar, nombre sabor, banio, etc son tipos de datos!
06-04-2014 00:15
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
alan_0cool Sin conexión
Empleado de Fotocopiadora
Levantate Hijo de °!"# p...
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 27
Agradecimientos dados: 53
Agradecimientos: 15 en 2 posts
Registro en: Sep 2011
Mensaje: #7
RE: Consulta Ejercicio Haskell
calorias::Producto -> Integer
calorias (Cafe _ azucar) = azucar*3
calorias (Gaseosa _ azucar) = azucar
calorias (Helado ( _ ,"chocolate") "chocolate")= 370
calorias (Helado ("chocolate", _) "chocolate")= 370
calorias (Helado _ _) = 220
calorias AguaMineral= 0

contenidoCalorico::Producto -> Integer
contenidoCalorico AguaMineral = "Bajo"
contenidoCalorico | calorias Producto < 100 = " Bajo"

Como puedo hacer para reutilizar la funcion calorias en la funcion contenidoCalorico? yo lo habia pensado de esta forma pero no me funca, me tira Not in scope: data constructor `Producto'
10-04-2014 19:05
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Ichiluk Sin conexión
Campeon del cubo Rubik
Metametaprogramando.
****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 134
Agradecimientos dados: 5
Agradecimientos: 21 en 18 posts
Registro en: Apr 2008
Mensaje: #8
RE: Consulta Ejercicio Haskell
Tenés el mismo problema, te estás confundiendo los tipos (que van con mayúsuculas) con las variables dentro de la función, que van con minúsculas.

Si estás queriendo hacer pattern matching con el constructor de tu tipo, tenés que hacer


data Tipo = Constructor Tipo1 Tipo2 Tipo3

....

funcion (Constructor variable1 variable2 variable3) = <acá usas las variables>


para usar calorías dentro de contenidoCalorico no te hace falta pattern matching, los usás polimórficamente:


contenidoCalorico unProducto
| calorias unProducto < 100 = "Bajo"
| otherwise = "Alto"


(no se las reglas que te pidieron, pero ponele)

Me hace mucho ruido el tipo AguaMineral. ¿Cómo lo definiste?
(Este mensaje fue modificado por última vez en: 11-04-2014 16:33 por Ichiluk.)
11-04-2014 16:33
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
locopro333 Sin conexión
Empleado de Fotocopiadora
Pura Vida!!!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 3
Agradecimientos: 4 en 3 posts
Registro en: May 2011
Mensaje: #9
RE: Consulta Ejercicio Haskell
Yo hice esto y me sale este error, no cual sera la falla....

<interactive>:10:1:
The function `contenidoCalorico' is applied to three arguments,
but its type `Producto -> String' has only one
In the expression: contenidoCalorico Cafe "dsadas" 60
In an equation for `it': it = contenidoCalorico Cafe "dsadas" 60



contenidoCalorico :: Producto -> String

contenidoCalorico producto
| (calorias producto < 100) = "Bajo"
| (calorias producto < 200) = "Alto"
| otherwise = "Medio"

(Este mensaje fue modificado por última vez en: 14-04-2014 21:19 por locopro333.)
14-04-2014 20:04
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
locopro333 Sin conexión
Empleado de Fotocopiadora
Pura Vida!!!
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 25
Agradecimientos dados: 3
Agradecimientos: 4 en 3 posts
Registro en: May 2011
Mensaje: #10
RE: Consulta Ejercicio Haskell
Me auto-corrijo....Me faltaron poner los paréntesis cuando definía el producto cry

BIEN thumbup3
ghci> contenidoCalorico (Cafe "fruta" 60)
"Alto"


PARA ATRAS thumbdown
ghci> contenidoCalorico Cafe "fruta" 60

<interactive>:11:1:
The function `contenidoCalorico' is applied to three arguments,
but its type `Producto -> String' has only one
In the expression: contenidoCalorico Cafe "fruta" 60
In an equation for `it': it = contenidoCalorico Cafe "fruta" 60
(Este mensaje fue modificado por última vez en: 14-04-2014 21:28 por locopro333.)
14-04-2014 21:26
Envíale un email Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
.-Fede-. Sin conexión
Profesor del Modulo A

*****

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 254
Agradecimientos dados: 68
Agradecimientos: 41 en 39 posts
Registro en: Nov 2011
Facebook
Mensaje: #11
RE: Consulta Ejercicio Haskell
Fijate que pusiste <200 = "Alto" y deberia ser medio =P
15-04-2014 21:09
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)



    This forum uses Lukasz Tkacz MyBB addons.