Qual è la migliore implementazione di Scheme o LISP per OS X?


86

Sto cercando una versione di Scheme o anche LISP che posso usare per recuperare alcune abilità di sviluppo Lisp perse. Alcune funzionalità web sarebbero utili ma non essenziali.

Ho esaminato lo schema Plt e MIT e, sebbene entrambi abbiano un bell'aspetto, il Plt sembra essere più ricco di funzionalità. Ho anche esaminato le implementazioni Lisp ma sembrano tutte piuttosto costose.

Preferisco le implementazioni gratuite / poco costose in quanto è probabile che si tratti solo di una programmazione occasionale per hobby. Quali consigli avresti?


6
Notare che PLT Scheme ha cambiato nome in Racket.
soegaard

domanda fortemente correlato: stackoverflow.com/questions/2485859
pnkfelix

2
Perché questa domanda non è stata chiusa e quasi tutte le altre come questa l'hanno fatto?
Erik Kaplun

Risposte:


71

Andrei con Racket. Potrebbe non essere veloce come SBCL, ma ha eccellenti librerie e documentazione, oltre a un ambiente integrato progettato per farti sviluppare ed eseguire programmi Scheme fin da subito. Quello che mi piace davvero dell'IDE di Racket, DrRacket, è quello che non devi fare: non devi imparare Emacs, non devi imparare SLIME, non devi preoccuparti di dare la caccia al terzo- librerie di partito, poiché praticamente tutte le librerie pensate per Racket possono essere trovate nei pacchetti . Tutto sommato, riduce davvero la curva di apprendimento e ti consente di concentrarti sull'attività effettiva da svolgere: scrivere codice eccezionale.

Inoltre, viene fornito con un server Web se si desidera creare siti Web basati su Racket (che sto attualmente esaminando).


1
Ho scelto PLT più o meno a caso poche settimane fa e finora sono molto soddisfatto della mia scelta. Come hai detto, molte librerie e documentazione, alcuni strumenti utili.
Slartibartfast,

Grazie, um, nessuno. Sono più concentrato sugli strumenti e sulla documentazione che sulla velocità, quindi vado con PLT.
Mark Brittingham

1
Cosa certa. DrScheme è stato creato pensando all'istruzione, che ha alcuni aspetti positivi (semplice da usare e documentato) ma ha anche alcuni aspetti negativi; a meno che tu non stia usando HtDP ( htdp.org ) è meglio ignorare le lingue di insegnamento e usare Module per tutto.
Kyle Cronin

Oltre ad essere ora chiamato Racket, ora c'è un nuovo sistema di pacchetti e un nuovo catalogo di pacchetti che ora è preferito su Planet per la maggior parte dei casi d'uso.
Jack

22

Ho fatto un bel po 'di esperimenti con questo.

Clozure Common Lisp (nata Open MCL) è di gran lunga il più veloce; 25-30 percento più veloce del prossimo concorrente sul mio Intel Mac Mini.

Lo schema MIT funziona abbastanza bene su un Mac. Penso di averlo compilato da solo, ma in quel sito ci sono i binari. Anche lo schema PLT è carino e forse un po 'meglio integrato nel mondo Mac. (Lo schema PLT è ora noto come Racket , ma non l'ho sperimentato dopo la modifica.)


2
praticamente tutto quello con cui l'ho provato; in genere si tratta di una pesante manipolazione di elenchi e di un uso massiccio della loopmacro.
Charlie Martin,

1
Potrei notare che CCL non sembra funzionare su Intel a 32 bit, quindi il mio Mac Mini è un po 'vecchio per questo.
David Thornley,

16

Sono un grande fan di Clojure, SBCL e Clozure CL. Sono tutti fantastici, ma sono anche eccessivi se tutto ciò che vuoi fare è rinfrescare le tue costolette Lisping. Richiedono tutti quantità assurde di ricerca di informazioni, ricerca di mailing list, installazione di pacchetti, irc in agguato, ecc.

Dr Scheme si installa e funziona. Ho finito i primi 3 capitoli di SICP quattro anni e mezzo fa usando Dr Scheme. Niente era più profondo della definizione di un valutatore di Scheme in sé. Una volta capito che avrai molta più pazienza per i fratelli della forza industriale.


3
In realtà non avevo bisogno di nient'altro per la mia configurazione Ubuntu-SBCL-SLIME-stumpwm. Per cominciare, Practical Common Lisp e CLHS sono tutto ciò di cui hai bisogno, e questo ti porta lontano.
Svante

15

Per Scheme, DrRacket è fantastico (incluso in Racket ).

Per Common Lisp, Ready Lisp è fantastico. Una singola dose con SBCL, Aquamacs e Slime che funzionano fuori dagli schemi.

Dal sito Web:

Ready Lisp è un collegamento di diversi pacchetti Common Lisp popolari specialmente per Mac OS X, tra cui: Aquamacs, SBCL e SLIME. Una volta scaricato, avrai un unico pacchetto di applicazioni su cui puoi fare doppio clic e ti ritroverai in una REPL Common Lisp completamente configurata.

È l'ideale per gli utenti di OS X che vogliono provare la bellezza di Common Lisp con il minimo sforzo. Potrebbe anche essere utilizzato dagli insegnanti per offrire ai loro studenti Mac un ambiente Common Lisp gratuito e completo da portare a casa con loro. Requisiti

La versione corrente di Ready Lisp è 20090127 e richiede Mac OS X 10.5 (Leopard).

Include le seguenti versioni del software dei componenti:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16


5

A seconda di come definisci "Lisp", Clojure potrebbe adattarsi al conto. Funziona bene su OS X (funziona ovunque venga eseguita la JVM). Ha funzionalità web ed è gratuito.

Ha anche il vantaggio di essere nuovo, fresco e divertente da usare. Potrebbe essere l'ideale per la programmazione hobby. È facile scrivere app Web o app GUI (utilizzando Swing di Java o anche Qt).


4

Non l'ho usato da solo, ma Steel Bank Common Lisp ha ricevuto un certo entusiasmo su reddit. È open source e gratuito, quindi il prezzo è giusto per alcuni programmi per hobby.

In passato, ho avuto GNU Common Lisp in esecuzione sul mio macbook pro.


4

Se stai cercando Scheme puoi dare un'occhiata a JazzScheme appena rilasciato .


4

Raccomando Racket ai nuovi arrivati, poiché fornisce uno degli IDE più belli per i principianti di Scheme (o meglio, i principianti di programmazione che utilizzano Scheme, o meglio ancora, si fanno strada attraverso HtDP).

http://racket-lang.org/

Un'altra opzione, per le persone che sono più interessate a un piccolo sistema Scheme per modificarlo da soli o leggere il suo codice sorgente, è Larceny Scheme, che è di grande interesse perché il suo compilatore JIT, Twobit, è esso stesso implementato interamente in Scheme.

http://www.larcenists.org/


Aggiornamento: Inoltre, Chez Scheme è stato recentemente reso open source:

https://github.com/cisco/ChezScheme

(Potrebbe non essere "piccolo" come Larceny, ma ha un compilatore di ottimizzazione molto aggressivo.)


sul sito web, sembrano menzionare solo un compilatore nativo, un compilatore to-C e un'implementazione CLR: dov'è quella JIT?
Erik Kaplun

Il compilatore nativo è un JIT.
pnkfelix

(cioè, compila dinamicamente ogni espressione Scheme che gli dai tramite 'load' o REPL nel codice macchina x86. JIT qui è per "just in time"; non è correlato a Java e JVM, nel caso in cui sia quello che stai pensavo intendessi con JIT)
pnkfelix

Non pensavo avesse niente a che fare con Java; è solo che la home page dice "compila direttamente nel codice macchina nativo" , e non è così che vengono solitamente descritte le VM / interpreti che compilano JIT.
Erik Kaplun

1
Per rispondere alla tua domanda, non puoi davvero ottenere un binario autonomo da Larceny così com'è in questo momento. È possibile caricare l'origine dello schema e quindi serializzare il relativo heap (con codice compilato) in un'immagine heap, ma anche in questo caso è comunque necessario ridistribuire il file heap e il binario di runtime come file separati. Ho considerato di provare a rendere più facile unire i due in un'unica immagine binaria, ma non ho mai fatto il grande passo.
pnkfelix


2

Se sei solo programmatore per hobby, LispWorks ha una versione personale gratuita che è abbastanza potente e sofisticata. Il problema più grande è un limite di tempo di esecuzione di diverse ore. Quindi, non scriverai server a lunga esecuzione al suo interno, ma ciò non significa che non sia uno strumento utile.

CLISP funziona su quasi tutto, ed è piuttosto carino in realtà, semplicemente non fa thread. (Importante se vuoi scrivere un server reale, ma come ci hanno mostrato PHP e Perl, Apache + [inserisci lingua] è una piattaforma molto valida.)



1

Ultimamente mi sono fatto la stessa domanda. Avendo usato DrScheme su OS X, sarebbe stata la mia prima scelta di distribuzione Scheme per qualsiasi piattaforma. IDE molto carino, funzionalità di debug e un buon set di librerie / framework (incluso un toolkit GUI molto carino che "funziona ... anche su Mac" ;-))

Tuttavia, ora sto cercando un ambiente altrettanto confortevole per Common Lisp. Si è trattato di CCL (OpenMCL) rispetto a SBCL. SBCL sembra essere la scelta popolare ma ho letto che su OS X non supporta il threading. (È davvero un problema?). Clozure CL, d'altra parte, vanta un buon supporto per thread nativi, obcj-bridge, ecc ...

Trovo CCL un po 'strano ma ho intenzione di mantenerlo per un po' - Sembra ancora la scelta logica per l'integrazione.

Uso Emacs 23 (costruito dai sorgenti usando --with-ns) e Slime come ambiente e questo funziona bene per me. :-)


1

Ho scoperto che Chicken funziona bene per Scheme ed è disponibile tramite homebrew.

brew install chicken

La maggior parte del codice di SICP funziona con piccole modifiche.


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.