Изменить модуль/пространство имен REPL в Julia

Я ищу способ «ввести» модуль в REPL, чтобы иметь доступ к всем символам без уточнения (не только к экспортированным) и к любой функции (пере)определенной в REPL попадает в указанный модуль. (В основном это функциональность макроса Common Lisp in-package.)

Это было бы полезно в рабочем процессе, ориентированном на REPL, так как я мог бы написать тот же код в REPL, что и в модуле, который я разрабатываю.

В руководстве рекомендуется рабочий процесс, где я уточняю все, но это кажется раздражающим.


person vukung    schedule 03.08.2016    source источник
comment
Я запустил REPLmods.jl некоторое время назад: github.com/spencerlyon2/REPLMods.jl   -  person spencerlyon2    schedule 04.08.2016
comment
Ницца! Именно то, что мне было нужно, спасибо.   -  person vukung    schedule 04.08.2016


Ответы (3)


Я запустил для этого пакет под названием REPLMods.jl. Вероятно, его следует отполировать, но у меня не было времени.

Я разговаривал с основными участниками Julia, и они выразили заинтересованность в том, чтобы объединить их с базой, как только все наладится, но опять же, нет времени!

person spencerlyon2    schedule 04.08.2016

Я знаю, что это не совсем то, о чем вы спрашиваете, но на всякий случай «очевидное» не пришло вам в голову (или будущим посетителям вопроса), если вы загрузили модуль с раздражающе громоздким именем, например.

import LaTeXStrings

и вы не хотите постоянно вводить LaTeXStrings только для того, чтобы изучить его доступные, т.е.

LaTeXStrings.[TAB]

вы можете просто присвоить импортированный модуль целиком другой переменной, т.е.

const l = LaTeXStrings

Я уверен, что в отсутствие более подходящего встроенного решения, по крайней мере, набирать l.[TAB], а не LaTeXStrings.[TAB], гораздо более терпимо :)

(На самом деле мне кажется странным, что julia не поддерживает синтаксис import LaTeXStrings as l...)

person Tasos Papastylianou    schedule 04.08.2016
comment
Это также может быть легко достигнуто с помощью макроса, такого как этот @import тот, который я использую в своем ~/.juliarc.jl: @import Foo as f, который расширяется точно до вашего примера. - person HarmonicaMuse; 06.08.2016

Сейчас 2020 год, я использую Julia 1.4 и не смог заставить работать REPLMods.jl. . Я думаю, что следующие кажутся достаточно хорошими на данный момент:

person digikar    schedule 12.10.2020