10Pines / pdepreludat

BSD 3-Clause "New" or "Revised" License
24 stars 2 forks source link

No se encuentra ifThenElse #19

Closed Juancete closed 4 years ago

Juancete commented 4 years ago

Al intentar modelar una solución con if, arroja como error:

Not in scope: ‘ifThenElse’

ludat commented 4 years ago

hola @Juancete, podés compartir el codigo que hace que ese error aparezca? esa función no esta definid por pdepreludat y sin más contexto no vamos a poder hacer demasiado

Juancete commented 4 years ago

Hola @ludat, perdón por no declarar el contexto antes.

data Guitarra = Guitarra {
  marca :: String,
  modelo :: String,
  anio :: Number,
  cuerdas :: Number
}
masVieja :: [Guitarra] -> Guitarra
masVieja = foldl1 (\guitarra1 guitarra2 -> if (anio guitarra1 < anio guitarra2) then guitarra1 else guitarra2) 

Dada una colecció nde guitarras, me quiero quedar con la más vieja.

JuanFdS commented 4 years ago

Ohh, no sabía que iba a pasar eso pero creo que ya sé por que es. Me parece que es esta extension la que está molestando: https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/glasgow_exts.html#rebindable-syntax-and-the-implicit-prelude-import

Un workaround es tener definida la funcion ifThenElse en donde sea que se esté usando un if

ifThenElse :: Bool -> a -> a -> a
ifThenElse condition ifTrue ifFalse = case condition of
  True -> ifTrue
  False -> ifFalse

Y creo que el fix va a ser agregar eso para que el pdepreludat lo exporte :sweat_smile:

Juancete commented 4 years ago

Es correcto @JuanFdS. Al agregar la definición de ifThenElse se solucionó el error.