Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: PabloPbl en 12 Marzo 2018, 17:29 pm



Título: [Ayuda] Por que no anda esta función en Haskell
Publicado por: PabloPbl en 12 Marzo 2018, 17:29 pm
Hola buenos llevo rato haciendo un ejercicio de Haskell que no puedo lograr hacerlo.
En si el ejercicio creo que esta perfecto, pero Haskell no me lo toma y me da error.

Esto es lo que llevo:
Código
  1. pesoLiviano altura = max(0, (altura*100)-300)
  2. pesoPesado altura = min(300, altura*100)
  3.  
  4. pesoPino altura  = (pesoPesado altura + pesoLiviano altura) * 3
  5.  
  6. esPesoUtil peso = peso >= 400 && peso <= 1000
  7.  
  8. sirvePino  = esPesoUtil.pesoPino
  9.  

La lógica del codigo se que esta bien, en otros lenguajes lo hice bien, pero acá parece un error de sintaxis o algo asi:

Código:
pesoPino altura  = (pesoPesado altura + pesoLiviano altura) * 3

El error creo que esta cuando llamo al mismo parametro dentro de la funcion 2 veces, nose si sea eso:



Y este es el erro que me da:

Código:
Non type-variable argument
      in the constraint: Num ((t, t) -> (t, t))
    (Use FlexibleContexts to permit this)
    When checking that ‘pesoPino’ has the inferred type
      pesoPino :: forall t t1.
                  (Num t, Num t1, Num ((t, t1) -> (t, t1)), Ord t, Ord t1) =>
                  t1 -> (t, t1) -> (t, t1)


Título: Re: [Ayuda] Por que no anda esta función en Haskell
Publicado por: srWhiteSkull en 12 Marzo 2018, 19:05 pm
Prueba usar al comienzo del código :
Código:
 {-# LANGUAGE FlexibleContexts #-}


No entiendo de Haakell, nunca lo he usado, pero el mensaje podría interpretarse como que haces operaciones con tipos distintos.