• PoolloverNathan@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    7 months ago

    You can’t random-access an iterator and use it again later. Can Rust compute the value of calling a function an infinite number of times?

    — former rustacean

    • Lauchmelder@feddit.de
      link
      fedilink
      Deutsch
      arrow-up
      0
      ·
      edit-2
      7 months ago

      it can compute how often I needed to compute the value of calling a function an infinite number of times.

      println!("0");
      
      • PoolloverNathan@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        7 months ago

        If you’ve used a parser library’s recursive parser, you have infinite calls right there. If it supplies a recursive-parser function, that function is a type-limited equivalent to fix, which performs the infinite call operation. Your Rust library most likely implements recursion using hidden mutability, but in Haskell, your parsers can remain infinitely-recursive while still referencing themselves and immutable.

        Also, we get to ask people if they know what a monad is.

    • anton@lemmy.blahaj.zone
      link
      fedilink
      arrow-up
      0
      ·
      7 months ago

      You can’t random-access an iterator and use it again later.

      If your specific use case really needs random access to a list while lazy computing the elements just wrap them in Lazy and put them in a vector.

      Can Rust compute the value of calling a function an infinite number of times?

      The return type of an infinitely recursive function / infinite loops is ⊥, a type that by definition has no values. (Known in rust as !)