Aproximando-se do SICP em Clojure em vez de Scheme

11

Sou estudante de terceiro ano em um programa de engenharia de software e trouxe a idéia de ler o SICP para um consultor para obter uma compreensão mais profunda e mais fundamental dos princípios por trás de todo esse software que criamos.

Ele sugeriu não aprender o esquema para concluir o livro (porque não é tão comum quanto os dialetos modernos do Lisp), mas fazer os exercícios em Clojure.

É um livro já difícil, se eu tentar os exercícios do livro no Clojure mais moderno, como isso funcionaria? Por exemplo, não consigo encontrar soluções reais, a sintaxe que eles ensinam para o Scheme é diferente etc.

ironicaldiction
fonte

Respostas:

14

No meu primeiro ano na universidade, o primeiro curso de programação que fiz foi usar o SICP (que foi em 1988). No entanto, eu tive um problema semelhante a você: para o meu próprio computador (na verdade, um Commodore Amiga), não havia implementação de Esquema disponível naquele momento, apenas um dialeto Lisp diferente (não me lembro do nome).

No entanto, dada a flexibilidade do Lisp, era bastante simples "emular" a sintaxe do esquema apenas adicionando as macros e funções lisp ausentes em alguns scripts. Na verdade, isso foi suficiente para implementar todos os exercícios dos capítulos 1 a 3 necessários durante o curso (observe que o SICP na verdade não exige a pilha de esquemas completa, basta um pequeno subconjunto).

Portanto, como o Clojure é o AFAIK, um dialeto moderno do Lisp, acho que você poderia fazer algo semelhante, o que lhe dá a opção totalmente livre de escrever coisas no Scheme ou no Clojure ou em uma mistura de ambos.

Obviamente, também é possível resolver os exercícios diretamente no Clojure, os dois idiomas são muito semelhantes. Mais importante, o SICP não é sobre sintaxe da linguagem de programação , é sobre o uso correto de abstrações na programação (por exemplo, com funções, dados e objetos). Portanto, não pense muito nos possíveis problemas de sintaxe, pois estes não estão no foco deste livro e, provavelmente, são de menor preocupação.

Doc Brown
fonte
6
O único problema prevejo é que clojure carece 1. TCO ( recursó lida cauda recursão , as chamadas não gerais) e 2. a falta de call-with-current-continuationque é necessário para o capítulo 4.
Daniel Gratzer
2
@jozefg: Eu acho que se o OP obtiver sucesso nos capítulos 1 a 3, ele provavelmente irá no ponto em que não mais reclamará das diferenças sintáticas entre Clojure e Scheme ;-)
Doc Brown
@DocBrown considerar editar ing esclarecimentos sobre capítulos 1-3 em seu comentário acima para a resposta (e, possivelmente, explicar os problemas com o capítulo 4, se você concorda com comentário discutir estes )
mosquito
@gnat: o comentário é certamente correto, mas IMHO um pouco sutil. A parte importante da minha resposta é o último parágrafo.
Doc Brown
0

Encontrei sua pergunta logo depois de encontrar este site, que parece estar bem no seu beco (embora você o tenha encontrado ou seja uma alternativa nos meses seguintes): SICP in Clojure

Paul Bissex
fonte