Big problem with not big list

Abierto
#142 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
4/5
Tiempo estimado
3-5 días
Aptitud para principiantes
25/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Estancado
Área
backend

Línea de trabajo

The report includes a reproducer using Data.List.Lazy.iterate, take, and length, and points to src/Data/List/Lazy.purs near line 189 as a possible cause. Start by reproducing the stack overflow with the provided examples and inspect the lazy list implementation there. Done means the large iterate examples work without a stack overflow or the issue is clarified as expected behavior.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

status: needs more info

Hello everyone! I have some experiments with lazy list. But I have some problem.

module Main where

import Prelude (Unit, map, mod, show, ($), (*), (+), (/=), (<<<), (<=))
import Data.List.Lazy (all, filter, repeat, take, iterate, length, takeWhile, (:))
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)
import Data.Lazy (defer, force)

main :: Eff (console::CONSOLE) Unit
main = do
  -- log <<< show <<< length <<< take 1000000 <<< map (_+10) <<< repeat $ 1 -- works
  -- log <<< show <<< length <<< take 10000000 <<< map (_+10) <<< repeat $ 1 -- hard
  -- log <<< show <<< length <<< take 100000000 <<< map (_+10) <<< repeat $ 1 -- oh my...
  -- log <<< show <<< length <<< take 100000 <<< iterate(_+1) $ 1 -- Maximum call stack size exceeded
  -- log <<< show <<< length <<< take 10000 <<< iterate(_+1) $ 1 -- Maximum call stack size exceeded
  log <<< show <<< length <<< take 1000 <<< iterate(_+1) $ 1 -- only this code works!!!

As u can see iterate has some strange behavior. I think this problem in map here https://github.com/purescript/purescript-lists/blob/master/src/Data/List/Lazy.purs#L189

Or maybe I don't know how use lazy list in purescript. If it is, please help me =)

Lenguaje dominante
PureScript
Estrellas
61
Forks
50
Merge medio
2 d 6 h
PR fusionados (30 d)
1

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de purescript/purescript-lists

Todos los issues de purescript/purescript-lists

Issues similares

Más issues de Backend & API Design

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.