IOCamlJS

This is prototype of an OCaml toplevel compiled to Javascript and used as a kernel for the IPython notebook.

Basic code execution seems to be fine.


In [1]:
let a = 20
let b = 40
let c = a + b


Out[1]:
val a : int = 20
Out[1]:
val b : int = 40
Out[1]:
val c : int = 60

stdout/stderr

Data written to the Pervasives stdout and stderr channels are redirected to the notebook.


In [2]:
Printf.printf "c = %i\n" (c+1)


c = 61
Out[2]:
- : unit = ()

In [3]:
Printf.fprintf stderr "c = %s\n" (string_of_int (c*2))


c = 120
Out[3]:
- : unit = ()

The io code in the dev version does buffering - I think until a flush or newline.


In [4]:
Printf.printf "hello"


Out[4]:
- : unit = ()

...nothing yet...


In [5]:
Printf.printf "\n"


hello
Out[5]:
- : unit = ()

mime type display

We have access to the same Iocaml.display function call (but no mime channel).


In [9]:
Iocaml.display "text/html" "<b>hello</b> <i style=\"color:green\">world</i>"


hello world
Out[9]:
- : unit = ()

Compiler output messages

To avoid compiler messages dominating the output cells they are by default limited to a height of 100px. This can be changed by setting the string ref Iocaml.output_cell_max_height.

To see the full message just click on it.


In [4]:
Iocaml.output_cell_max_height := "50px";;
Array.init 1000 (fun i -> i);;


Out[4]:
- : unit = ()
Out[4]:
- : int array =
[|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; 77;
  78; 79; 80; 81; 82; 83; 84; 85; 86; 87; 88; 89; 90; 91; 92; 93; 94; 95; 96;
  97; 98; 99; 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; 177; 178; 179; 180; 181; 182; 183; 184; 185; 186;
  187; 188; 189; 190; 191; 192; 193; 194; 195; 196; 197; 198; 199; 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;
  277; 278; 279; 280; 281; 282; 283; 284; 285; 286; 287; 288; 289; 290; 291;
  292; 293; 294; 295; 296; 297; 298; ...|]

In [ ]: