How to print in REPL the code of functions in Julia?

为君一笑 提交于 2019-12-01 08:54:53

问题


In Julia, a lot of the Base and closer related functions are also written in pure Julia, and the code is easily avaible. One can skim through the repository or the local downloaded files, and see how the function is written/implemented. But I think there is allready some built in method that does that for you, so you can write in REPL or Jupyter Notebook something like:

@code functioninquestion()

and get something like:

functioninquestion(input::Type) some calculations return end without paging throug the code. I just don't remember the method or call. I have read the Reflection/Introspection section of the Manual but I cannot seem to be able to use anything there. I've tried methods, methodswith, code_lowered, expand and cannot seem to make them give what I want-


回答1:


Though this may not be what the OP is looking for, @less is very convenient to read the underlying code (so I very often use it). For example,

julia> @less 1 + 2

gives

+(x::Int, y::Int) = box(Int,add_int(unbox(Int,x),unbox(Int,y)))

which corresponds to the line given by

julia> @which 1 + 2
+(x::Int64, y::Int64) at int.jl:8



回答2:


This is not currently supported but probably will be in the future.




回答3:


@edit functioninquestion() will open up your editor to the location of the method given. It probably wouldn't be to hard to take the same information used by @edit and use it to open the file and skip to the method definition, and then display it directly in the REPL (or Jupyter). EDIT: While I was answering, somebody else mentioned @less, which seems to do exactly what you want already.



来源:https://stackoverflow.com/questions/37662365/how-to-print-in-repl-the-code-of-functions-in-julia

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!