2013-05-06 3 views
2

Я пытаюсь выяснить, где находится исходный код макроса defprotocol.Как определяется макрос defprotocol в clojurescript?

в cljs.core источник:

https://github.com/clojure/clojurescript/blob/master/src/cljs/cljs/core.cljs

В defprotocol макросы выскакивает внезапно на линии 155 (наряду с функцией -invoke). Где мы можем найти, где это реализовано?

ответ

2

Все макросы в ClojureScript должны быть реализованы как Clojure.

defprotocol реализован в строке 796 этого файла:

https://github.com/clojure/clojurescript/blob/master/src/clj/cljs/core.clj#L796

Обратите внимание, что этот файл является файлом Clojure, не ClojureScript файл.

+0

Спасибо! Btw ... Вы знаете, как работает макрос js *? Я вижу это во всем коде cljs.core, но нет определения – zcaudate

+0

js * не является макросом, это специальная форма. Он используется, чтобы позволить ClojureScript при необходимости упасть на Javascript. В [этом видео] (http://www.youtube.com/watch?v=5edtbpVOOBI&feature=player_detailpage#t=1681s) Крис Хаузер рассказывает об этом немного. –

+1

Код, который реализует js *, находится в этом файле: [analyzer.clj] (https://github.com/clojure/clojurescript/blob/master/src/clj/cljs/analyzer.clj#L826) –

 Смежные вопросы

  • Нет связанных вопросов^_^