Hola Haskellers y Haskellettes,Haskell - anidado listas vacías
al leer http://learnyouahaskell.com/ un amigo mío se acercó con un problema:
¿Es posible en Haskell escribir una función recursiva que da verdadero si todos los sub -sub -_- sublistas están vacías. Mi primera suposición fue - debería ser - pero tengo un gran problema simplemente escribiendo la anotación tipo.
Intentó algo así como
nullRec l = if null l
then True
else if [] `elem` l
then nullRec (head [l]) && nullRec (tail l)
else False
que es - no funciona - :-)
me encontré con algo como
- plegable con concat - para llegar aa sola lista larga
(me da problemas para implementar) - o hacer un tipo de datos arborescente infinito - y hacer esto desde la lista
(no se han aplicado todavía)
pero este último sonar un poco como una exageración para este problema. lo que es sus ideas - en un domingo soleado como este ;-)
Gracias de antemano
como una reacción a todos los comentarios - este mal estilo que me gustaría añadir esto se solo un experimento !
¡No intente esto en casa! ;-)
Piense en el tipo de función que debería ser (si la implementa en listas normales). – yatima2975
ya lo pensé - debería ser algo infinito [[... [a] ...]] pero no es posible escribirlo en haskell - por eso surgió el segundo enfoque. Pero hay una forma más fácil de hacer esto. Además mi cerebro es un poco lento ya que estoy enfermo hoy. – epsilonhalbe
Enfermo o no, ¡estás en el camino correcto! Es bastante fácil escribir una familia de funciones 'nullRec2 :: [[a]] -> Bool',' nullRec3 :: [[[a]]] -> Bool' y así sucesivamente (¡prueba un par!), Pero tú no puede hacer que se ajusten fácilmente a una sola firma de tipo. O necesita un tipo de árbol como 'data Tree a = Branch [Tree a] | Nodo a' o tal vez hay algo posible con las clases de tipos (aún no he pensado mucho sobre este enfoque). – yatima2975