Skip to content
A pure Lua-based, lightweight REPL for Torch.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
cmake
doc readthedocs Aug 29, 2015
.gitignore
CMakeLists.txt Adding support for CMAKE (#62) Jan 15, 2017
LICENSE Create LICENSE Apr 18, 2015
README.md Merge pull request #30 from nicholas-leonard/rtd Aug 29, 2015
colorize.lua Total revamp of readline support. Dec 25, 2014
colors.lua added misc font decorators like bright, dim, nderline, etc Nov 11, 2016
init.lua
mkdocs.yml
readline.c fix for windows with wineditline Oct 28, 2016
th
trepl-scm-1.rockspec update wineditline from 2.101 to 2.201 Nov 27, 2016
utils.c

README.md

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   ...  completes to: coroutine

History:

> ARROW_UP | ARROW_DOWN

Help (shortcut to Torch's help method):

> ? torch.FloatTensor
prints help...

Shell commands:

> $ ls
README.md
init.lua
trepl-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()
0
0
0
[torch.DoubleTensor of dimension 3]

> 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
You can’t perform that action at this time.