| Rash and schemesh start from similar ideas: create a shell scriptable in some dialect of Lisp. Rash has several limitations, sometimes due to design choices, that schemesh solves: 1. no job control 2. multi-line editing is limited 3. from what I understand, shell syntax is available only at REPL top level. Once you switch to Lisp syntax with `(`, you can return to shell syntax only with `)`. Thus means you cannot embed shell syntax inside Lisp syntax, i.e. you cannot do `(define j {find -type f | less})` 4. shell commands are Lisp functions, not Lisp objects. Inspecting and redirecting them after they have been created is difficult 5. Rash is written in Racket, which has larger RAM footprint than schemesh running on vanilla Chez Scheme: at startup, ~160MB vs. ~32MB 6. Racket/Rash support for multi-language at REPL is limited: once you do `#lang racket`, you cannot go back to `#lang rash` |
It's possible I misunderstand what you mean because I'm not sure what piping to less is supposed to accomplish here, but this is not true. The following program works just fine: