Community/IRC/Jevalbot

From J Wiki
< Community‎ | IRC
Jump to: navigation, search

Jevalbot is an irc bot that can run J expressions.

Where can jevalbot be found?

No-one is currently running jevalbot all around the clock, but at least two of us sometimes run it when we go on irc. When we are running them, here is where you can find them.

The bots can be found on the freenode irc server (hostname irc.freenode.net port 6667) on channels #jsoftware and #ijx. As detailed on Community/IRC, the first channel is primarily intended for conversation with humans, while the second one is for conversing with bots, so if you want to experiment with some J phrases, use the second one. Look for the nicks evalj and ijx, the first one is the instance ran by B Jonas (b_jonas on irc), the second is by Dan Bron.

How do I use jevalbot?

The simplest usage is just to address the bot on a channel it's joined. Type its name followed by a colon (or right bracket or right parenthesis) followed by a self-complete j phrase. For example, suppose that evalj is joined on a channel, and your nick is b_jonas. Here's an imaginary conversation that could happen on the channel.

< vmye> evalj: i.5
< evalj> vmye: 0 1 2 3 4
< vmye> evalj]i.5 1
< evalj> vmye: 0
< evalj> vmye: 1
< evalj> vmye: 2
< evalj> vmye: 3
< evalj> vmye: 4
< vmye> evalj] ,/,.&' '(?~10$5)C.'pears'
< evalj> vmye: psrea asepr rpase erpas serpa paesr respa psera pears eapsr

As you can see, the replies are prefixed with your nick. You'll soon find out that long replies are truncated to avoid flooding:

< vmye> evalj]i.100 100
< evalj> vmye:    0    1    2    3    4    5    6    7    8    9   10   11   12   13   14
         15   16   17   18   19   20   21   22   23   24   25   26   27   28   29   30   31
         32   33   34   35   36   37   38   39   40   41   42   43   44   45   46   47   48
         49   50   51   52   53   54   55   56   57   58   59   60   61   62   63   64   65
         66   67   68   69   70   71   72   73   74   75   76...
< evalj> vmye:  100  101  102  103  104  105  106  107  108  109  110  111  112  113  114
         115  116  117  118  119  120  121  122  123  124  125  126  127  128  129  130  131
         132  133  134  135  136  137  138  139  140  141  142  143  144  145  146  147  148
         149  150  151  152  153  154  155  156  157  158  159  160  161  162  163  164  165
         166  167  168  169  170  171  172  173  174  175  176...
< evalj> vmye:  200  201  202  203  204  205  206  207  208  209  210  211  212  213  214
         215  216  217  218  219  220  221  222  223  224  225  226  227  228  229  230  231
         232  233  234  235  236  237  238  239  240  241  242  243  244  245  246  247  248
         249  250  251  252  253  254  255  256  257  258  259  260  261  262  263  264  265
         266  267  268  269  270  271  272  273  274  275  276...
< evalj> vmye:  300  301  302  303  304  305  306  307  308  309  310  311  312  313  314
         315  316  317  318  319  320  321  322  323  324  325  326  327  328  329  330  331
         332  333  334  335  336  337  338  339  340  341  342  343  344  345  346  347  348
         349  350  351  352  353  354  355  356  357  358  359  360  361  362  363  364  365
         366  367  368  369  370  371  372  373  374  375  376...
< evalj> vmye:  400  401  402  403  404  405  406  407  408  409  410  411  412  413  414
         415  416  417  418  419  420  421  422  423  424  425  426  427  428  429  430  431
         432  433  434  435  436  437  438  439  440  441  442  443  444  445  446  447  448
         449  450  451  452  453  454  455  456  457  458  459  460  461  462  463  464  465
         466  467  468  469  470  471  472  473  474  475  476...
< evalj> vmye: ...

Phrases executed like this are always using a fresh interpreter instance which is thrown away afterwards. The default j profile is not loaded, so you won't find the names defined by the library, nor names you've assigned to in previous lines. (A few settings like output truncation are still set.)

< vmye> evalj: NL
< evalj> vmye: |value error: NL
< vmye> evalj: NL =: 10{a. NB. if a phrase produces no output, you get an ok prompt when it's executed
< evalj> vmye: |ok
< vmye> evalj: NL
< evalj> vmye: |value error: NL

For this reason, sessions were invented.

[And then that was the point where I was lazy to continue the documentation and left it in this stage. I've written some more docs much later to Community/IRC, so go there and read about sessions there, but I'm still lazy to collect the docs into a proper form, so if you don't understand something, just ask. Thanks -- B Jonas <<DateTime(2008-11-19T21:02:50Z)>>]

How do I run my instance of jevalbot?

You can download the source of jevalbot from [1]. )As jevalbot is still in development, I sometimes upload new changes to that address.) Extract the tarball. Make a copy of the configuration file and edit it. Run the script with ruby using the name of the changed config file as the first command-line argument.

I'm currently using an i686-linux machine with ruby 1.8.5.

Where can I ask questions

You might find B Jonas on the freenode irc network with nick b_jonas, or you can write email to the address  (#~]~:1&|.) 'ambrus@@mmaatthh..bbmmee..hhuu'