Pergunta

Dependendo do meu humor, pareço oscilar entre querer um Lisp-1 e um Lisp-2.Infelizmente, além das diferenças óbvias de espaço de nomes, isso deixa todos os tipos de problemas divertidos de nome de função/etc que você encontra.Caso em questão, tentando escrever algum código esta noite, tentei fazer (map #'function listvar) que, é claro, não funciona em CL.Demorei um pouco para lembrar que queria mapcar, não map.É claro que não ajuda quando o slime/emacs mostra que o mapa é definido como algo, embora obviamente não seja a mesma função.

Então, dicas sobre como minimizar isso, antes de escolher um ou outro e persistir nele?

Foi útil?

Solução

Mapa é mais geral que mapcar, por exemplo, você poderia fazer o seguinte em vez de usar mapcar:

(map 'list #'function listvar)

Como mantenho o esquema e o CL separados na minha cabeça?Acho que quando você conhece bem os dois idiomas, você sabe o que funciona em um e não no outro.Apesar das semelhanças sintáticas, são línguas bastante diferentes em termos de estilo.

Outras dicas

Bem, acho que assim que você adquirir experiência suficiente em ambos os idiomas, isso não será um problema (apenas com idiomas naturais semelhantes, como italiano e espanhol).Se você costuma programar em uma linguagem e mudar para outra apenas ocasionalmente, infelizmente você está fadado a escrever Common Lisp no Scheme ou vice-versa;)

Uma coisa que ajuda é ter um ambiente visual distinto para ambas as linguagens, usando destaque de sintaxe em outras cores, etc.Então, pelo menos, você sempre saberá se está no modo Common Lisp ou Scheme.

Estou definitivamente ciente de que existem diferenças sintáticas, embora certamente ainda não seja fluente o suficiente para usá-las automaticamente, fazendo com que o código pareça muito mais semelhante atualmente ;-).

E tive a sensação de que sua resposta seria correta, mas sempre posso esperar por um atalho <_<.

A maneira mais fácil de manter as duas linguagens corretas é pensar e escrever código em Common Lisp.O código Lisp comum pode ser convertido em código Scheme com relativa facilidade;no entanto, passar do Scheme para o Common Lisp pode causar algumas dores de cabeça.Lembro-me de uma vez em que estava usando um letrec no Scheme para armazenar variáveis ​​​​e funções e tive que dividi-lo em funções CL separadas para os namespaces de variáveis ​​​​e funções, respectivamente.

Com toda a praticidade, porém, não tenho o hábito de escrever código CL, o que torna os momentos que tenho ainda mais dolorosos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top