Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
Problema HASKELL (numeros primos)
Autor Mensaje
agulencina96 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Tucumán

Mensajes: 3
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Jun 2017
Mensaje: #1
Problema HASKELL (numeros primos)
Que tal gente tengo este problema: cuando infiero la base de conocimientos de Hugs con este codigo

primos :: Int -> Bool
primos 1 = True
primos 2 = True
primos x = if ((odd x) && (primos(truncate (sqrt x)))) == True then True
else False


me tira el siguiente error:

Instances of (Floating Int, RealFrac Int) required for definition of primos


muchas gracias!
09-06-2017 18:36
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Focus Sin conexión
Empleado de Fotocopiadora
run neon tiger
**

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 46
Agradecimientos dados: 19
Agradecimientos: 24 en 9 posts
Registro en: Sep 2013
Mensaje: #2
RE: Problema HASKELL (numeros primos)
Hola, de dónde sacaste esa definición de primo?

El 23 es primo. 23 cumple con odd 23, pero la raíz truncada de 23 es 4, y 4 no es primo. Eso da false y por ser un && todo da false. Pero 23 es primo.

El 25 no es primo. 25 cumple con odd 25, pero la raíz truncada de 25 es 5, y 5 sí es primo. Eso da true y por ser un && todo da true. Pero 25 no es primo.

Saludos
11-06-2017 22:08
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.403
Agradecimientos dados: 205
Agradecimientos: 299 en 187 posts
Registro en: Jun 2008
Mensaje: #3
RE: Problema HASKELL (numeros primos)
¡Aloha!

En general, el "if ... then true, else false" es un error, dado que es redundate - la condición del if ya da true o false, así que con poner únicamente la condición, debería estar bien, y sin redundancia.

Además de lo que menciona Focus, claro.


Pero tu consulta no era por eso, si no por el error de Haskell.

Fijate que te está diciendo algo de Floating Int y RealFrac Int - pero en ambos casos habla de Ints.

El sistema de tipos de Haskell es súper potente, y probablemente el problema sea un detalle de implementación. Mis sospechas van a algo como que el tipo Int en realidad sean un montón de tipos raros, o no se qué, y que por eso Haskell se queja de que le pongas como limitación Int en lugar de, no se, algo como Integral o andá a saber.

Mi consejo es que pruebes el mismo código sin declararle los tipos arriba, a ver qué infiere Haskell (dependiendo de la versión que uses y qué se yo, creo que con `:t nombreFuncion` en la consola te dice el tipo qué Haskell infirió). Capaz eso ayuda a entender la diferencia entre lo que Haskell espera y lo que vos pusiste.

O repasate los apuntes y ejemplos vistos en clase, a ver si los Ints los declaraban así o de otro modo.


La otra es revisar el tipo que devuelve truncate, a ver si tu función primo está restringiendo más de lo que debe (o si te falta hacerle algo más al resultado de truncate - algún "as integer" o algo así, capaz).

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
12-06-2017 05:41
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] Desert69 recibio 1 Gracias por este post
agulencina96 (14-06-2017)
J9794 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 12
Agradecimientos dados: 6
Agradecimientos: 5 en 5 posts
Registro en: Jun 2013
Mensaje: #4
RE: Problema HASKELL (numeros primos)
Hola, aparte de las cosas que te comentaron (que eso da como primos cosas que no son primos, y que el if es redundante), haskell está rompiendo porque estás usando las funciones truncate y sqrt sobre un Int, cuando esas funciones necesitan algo que sea un numero RealFrac y Floating respectivamente. Basicamente te esta diciendo que tiene que ser un numero con coma, que para haskell son diferentes de los numeros enteros (hay formas de convertir de un entero a algo que es uno con coma así se puede operar).


PD: haskell no tiene una base de conocimientos, eso es prolog.
15-06-2017 18:12
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] J9794 recibio 1 Gracias por este post
Desert69 (18-06-2017)
agulencina96 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Tucumán

Mensajes: 3
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Jun 2017
Mensaje: #5
RE: Problema HASKELL (numeros primos)
Muchas gracias a todos! Ya encontre una solucion hace rato, no tuve tiempo de agradecerles.
Nos vemos!
19-06-2017 00:01
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Desert69 Sin conexión
Presidente del CEIT
Sin estado :( / "Anarquia...
********

Ing. en Sistemas
Facultad Regional Buenos Aires

Mensajes: 2.403
Agradecimientos dados: 205
Agradecimientos: 299 en 187 posts
Registro en: Jun 2008
Mensaje: #6
RE: Problema HASKELL (numeros primos)
Comparta, maestr@! =)

[Imagen: a2.php]
[Imagen: 971aa6599664453c05cb3e42d58bbc0eo.jpg]
19-06-2017 14:03
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
agulencina96 Sin conexión
Empleado del buffet
Sin estado :(
*

Ing. en Sistemas
Facultad Regional Tucumán

Mensajes: 3
Agradecimientos dados: 1
Agradecimientos: 1 en 1 posts
Registro en: Jun 2017
Mensaje: #7
RE: Problema HASKELL (numeros primos)
factores :: Int -> [Int]
factores n = [x | x <- [1..n], n `mod` x == 0]

esPrimo :: Int -> Bool
esPrimo n = factores n == [1,n]

primos :: [Int] -> [Int]
primos n = [x | x <- [2..n], esPrimo x]


creo que esta vez esta bien jajaja si ven algún error me avisan. Gracias gente!
19-06-2017 15:17
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] agulencina96 recibio 1 Gracias por este post
Desert69 (20-06-2017)
Buscar en el tema
Enviar respuesta 




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



    This forum uses Lukasz Tkacz MyBB addons.