Skip to content

Repository files navigation

TREPL: A REPL for Torch

 ______ __ | Torch7
/_ __/__ ________/ / | Scientific computing for LuaJIT.
/ / / _ \/ __/ __/ _ \ |
/_/ \___/_/ \__/_//_/ | https://github.com/torch
| http://torch.ch
th>

A pure Lua REPL for LuaJIT, with heavy support for Torch types.

Uses Readline for tab completion.

This package installs a new binary named th, which comes packed with all these features:

Features:

  • Tab-completion on nested namespaces
  • Tab-completion on disk files (when opening a string)
  • History
  • Pretty print (table introspection and coloring)
  • Auto-print after eval (can be stopped with ;)
  • Each command is profiled, timing is reported
  • No need for '=' to print
  • Easy help with: ? funcname
  • Self help: ?
  • Shell commands with: $ cmd (example: $ ls)
  • Print all user globals with who()
  • Import a package's symbols globally with import(package)
  • Require is overloaded to provide relative search paths: require('./mylocallib/')
  • Optional strict global namespace monitoring
  • Optional async repl (based on async)

Install

Via luarocks:

luarocks install trepl

Launch

We install a binary, simple to remember:

th
> -- amazing repl!

Alternatively, you can always bring up the repl by loading it as a lib, from anywhere:

luajit
> repl = require 'trepl'
> repl()

Use

Completion:

>cor+TAB...completesto: coroutine

History:

>ARROW_UP | ARROW_DOWN

Help (shortcut to Torch's help method):

> ? torch.FloatTensorprintshelp...

Shell commands:

> $ lsREADME.mdinit.luatrepl-scm-1.rockspec
[Lua#2] > $ ll...> $ ls...

History / last results. Two variables are used:

_RESULTS: contains the history of results:
> a = 1
> a
1
> 'test'
test
> _RESULTS
{
1 : 1
2 : test
}
_LAST: contains the last result
> _LAST
test
Convenient to get output from shell commands:
> $ ls -l
> _LAST
contains the results from ls -l, in a string.

Hide output. By default, TREPL always tries to dump the content of what's evaluated. Use ; to stop it.

>a=torch.Tensor(3)
>a:zero()
000
[torch.DoubleTensorofdimension3]
>a:zero();
>

Helpers

Colors libraries can be loaded independently:

>c=require'trepl.colorize'>print(c.red('a red string') ..c.Blue('a bold blue string'))

Globals

Global variables are a well known issue with Lua. th can be run with a flag -g that will monitor global variables creation and access.

Creation of a variable will generate a warning message, while access will generate an error.

th -g
> require 'sys';
created global variable: sys @ [c-module]
> a = 1
created global variable: a @ a = 1
> b
error: attempt to read undeclared variable b

Async repl [BETA]

An asynchronous repl can be started with -a. Based on async, this repl is non-blocking, and can be used to spawn/schedule asyncrhonous jobs. It is still beta, and does not yet have readline support:

th -a
> idx = 1
> async.setInterval(1000, function() print('will be printed every second - step #' .. idx) idx = idx + 1 end)
will be printed every second - step #1
will be printed every second - step #2
will be printed every second - step #3> idx = 20
will be printed every second - step #20
will be printed every second - step #21

About

A pure Lua-based, lightweight REPL for Torch.

Resources

Stars

81 stars

Watchers

12 watching

Forks

Releases

Packages

Used by

Contributors

Languages