quando voce escreve: (eval (if 4 4 2)) no caso o eval esta evaluando apenas o resultado da operacao (if 4 4 2) e nao a lista que voce passou. no fim fica assim (eval 4) Se voce quiser usar evaluar a lista voce precisa usar o sintax sugar ' (eval '(if 4 4 2)) ou a funcao list como fez nos outros examplos sobre a utilidade do code-as-data no meu ponto de vista: torna bem facil voce "extender" a linguagem criando novas macros. um exemplo bem comum de macros de usuarios 'e essa when-let* (defmacro when-let* [bindings & body] `(let ~bindings (if (and ~@(take-nth 2 bindings)) (do ~@body) ))) que eh basicamente um when-let que permite mutiplos bindings... ter code as data facilita e muito criar esse tipo de extensao. Desculpa os milhoes de erros de acentuacao e portugues meu SO ta em outro idioma
@IanOliveiraTI3 ай бұрын
Ah sempre bom lembrar: The first rule of the macro club is: don't write macros.
@IanOliveiraTI3 ай бұрын
E de forma geral acho que ce entendeu de forma correta, bons estudo.. clojure 'e muito divertido.
@DevEficiente3 ай бұрын
Verdade demais, me empolguei. Deixei um PS na descrição, já avisando do erro. E valeu demais pelo resto do feedback!
@williamdiegocampos57833 ай бұрын
Bons estudos por aí... Mas admito que sem pesquisar, mas te acompanhando, ainda não sei qual problema o Cloujure resolve. Por que devo adotar Cloujure? Quando devo considerar o uso?
@DevEficiente3 ай бұрын
É uma linguagem de uso geral, não resolve nada que não possa ser resolvido pelo Java, C# ou Javascript. Só faz de maneira diferente :).