Risp

Languages and libraries

lisp interpreter

SHOW HN2019

314points
84comments
#92of 2,195 in 2019
Top 5%of 2019 by points

How HN took it

CuriousMostly questions and neutral comments

3 positive, 23 neutral or asking, 0 mixed, 10 critical, out of 36 comments about the project. Thread score -0.15.

Idea: 1 for, 4 againstExecution: 0 for, 4 againstDesign: 1 for, 2 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Good read; Norvig-style walkthrough praised

    From 2 comments
    • I thought this was just going to be another forgettable "X implemented in Y", but this is actually a Rust-flavored version of Peter Norvig's classic "(How to Write a (Lisp)…
      kibwen on HN
    • > Finally, I have to say, I loved using Rust. It’s the least mental overhead I’ve had to maintain with a systems language, and it was a blast to use. This mirrors my experience…
      dataking on HN

Objections

  • Errors stringified into RispErr::Reason(String) lose information

    From 2 comments
    • A bit of feedback to the author: I cringe really, really hard when I see things like: ``` #[derive(Debug)] enum RispErr { Reason(String), } ``` One of the beauties of Rust's type…
      thenewwazoo on HN
    • Because I'm on my soapbox, I'll also recommend implementing ToString[1] right off the bat, too. That way you can print out useful error messages immediately. For example, if your…
      thenewwazoo on HN
  • Tokenizer uses replace and split, which is fragile

    From 1 comment
    • `tokenize` function looks weird. Why use replace and then split? How would you extend this to stirngs (which might contain "()" chars)? It might be OK in a toy example, but it…
      kovrik on HN

Requests

Questions

  • How would RispExp support circular lists and GC?

    From 2 comments
    • > `List(Vec<RispExp>)` The big question when implementing a runtime for a Lisp-like language in Rust is how the interpreter will interact with the GC. It looks like this project…
      firethief on HN
    • RispEsp is a tree using value semantics. How will RispExp evolve to support e.g. circularly linked lists? How will that interact with Rust's ownership requirements?
      ridiculous_fish on HN

Alternatives named

  • Carp

    From 1 comment
    • If you like Rust and Lisp this is also a cool project: https://github.com/carp-lang/Carp.
      msvan on HN
  • ketos

    From 1 comment
    • There is also quite older, but still maintained other implementation https://github.com/murarth/ketos
      hauleth on HN
  • scheme.rs

    From 1 comment
    • I'm partial to scheme.rs [edit] Which apparently does exist: https://github.com/isamert/scheme.rs
      hcs on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/19810504)