[cwn] Attn: Development Editor, Latest OCaml Weekly News
Alan Schmitt
alan.schmitt at polytechnique.org
Tue Jun 25 02:19:50 PDT 2019
Hello
Here is the latest OCaml Weekly News, for the week of June 18 to
25,
2019.
Table of Contents
─────────────────
PSA: ocaml/opam2 docker images updated to 4.08.0 release
Default key bindings for utop
Creating OCaml Platform
Other OCaml News
Old CWN
PSA: ocaml/opam2 docker images updated to 4.08.0 release
════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/psa-ocaml-opam2-docker-images-updated-to-4-08-0-release/3948/1>
Anil Madhavapeddy announced
───────────────────────────
The Docker images hosted at [ocaml/opam2] have now been updated
to
include the latest OCaml 4.08.0 release as well as the snapshots
of
4.09 and 4.10.
One sideeffect of this is that the `ocaml/opam2' default image
now has
OCaml 4.08 as its default switch. If you use it in CI, it may
suddenly give you errors if your code has not yet been ported to
work
with that new release.
As a reminder, you can pin the OCaml version you use in CI
easily by:
• running `opam switch 4.07' as the first command in the
Dockerfile
after `FROM ocaml/opam2'.
• using the `ocaml/opam2:4.07' image instead of the default one.
This
image also includes several other 4.07.0 variants (such as
afl,
flambda and so on), which you can list with `docker run
ocaml/opam2:4.07 opam switch'.
As always, please get in touch with me if you see any other
breakage
from these image updates.
[ocaml/opam2] <https://hub.docker.com/r/ocaml/opam2>
Default key bindings for utop
═════════════════════════════
Archive:
<https://discuss.ocaml.org/t/default-key-bindings-for-utop/3950/1>
Daniel Lim asked
────────────────
Just getting into OCaml, and utop is really nice, but I can't
seem to
find any of the default key bindings listed anywhere online.
It took quite some time to find out `C-p' can be used to move to
the
previous lines, which was really needed when coming across
multiline
use cases like this:
┌────
│ let ratio x y =
│ Float.of_int x /. Float.of_int y
│ ;;
└────
Is there anywhere that I can find the default key bindings for
the
repl?
Vladimir Keleshev replied
─────────────────────────
You can use `#utop_bindings;;' command in the prompt. Check out
other
useful `#utop_*' commands as well.
┌────
│ $ utop
│
────────────────────────────────┬─────────────────────────────────────────────────────────────┬────────────────────────────────
│ │ Welcome to utop version
2.3.0 (using OCaml version 4.07.0)! │
│
└─────────────────────────────────────────────────────────────┘
│
│ Type #utop_help for help about using utop.
│
│ # #utop_bindings;;
│ enter : accept -> accept the
current input.
│ escape : cancel-search -> cancel search
mode.
│ tab : complete -> complete
current input.
│ up : history-prev -> go to the
previous entry of the history.
│ down : history-next -> go to the next
entry of the history.
│ left : prev-char -> move the cursor
to the previous character.
│ right : next-char -> move the cursor
to the next character.
│ home : goto-bot -> move the cursor
to the beginning of the text.
│ end : goto-eot -> move the cursor
to the end of the text.
│ insert : switch-erase-mode -> switch the
current erasing mode.
│ delete : delete-next-char -> delete the
character after the cursor.
│ backspace : delete-prev-char -> delete the
character before the cursor.
│ M-enter : newline -> insert a
newline character.
│ M-tab : complete-bar -> complete
current input using the completion bar.
│ M-down : complete-bar -> complete
current input using the completion bar.
│ M-left : complete-bar-prev -> go to the
previous possible completion in the completion bar.
│ M-right : complete-bar-next -> go to the next
possible completion in the completion bar.
│ M-home : complete-bar-first -> go to the
beginning of the completion bar.
│ M-end : complete-bar-last -> go to the end
of the completion bar.
│ M-delete : kill-prev-word -> cut the word
behind the cursor.
│ M-backspace : kill-prev-word -> cut the word
behind the cursor.
│ M-b : prev-word -> move the cursor
to the beginning of the previous word.
│ M-c : capitalize-word -> capitalize the
first word after the cursor.
│ M-d : kill-next-word -> cut up until
the next non-word character.
│ M-f : next-word -> move the cursor
to the end of the next word.
│ M-l : lowercase-word -> convert the
first word after the cursor to lowercase.
│ M-n : history-next -> go to the next
entry of the history.
│ M-p : history-prev -> go to the
previous entry of the history.
│ M-u : uppercase-word -> convert the
first word after the cursor to uppercase.
│ M-w : copy -> copy the
current region to the clipboard.
│ C-left : prev-word -> move the cursor
to the beginning of the previous word.
│ C-right : next-word -> move the cursor
to the end of the next word.
│ C-delete : kill-next-word -> cut up until
the next non-word character.
│ C-space : set-mark -> set the mark to
the current position.
│ C-_ : undo -> revert the last
action.
│ C-a : goto-bol -> move the cursor
to the beginning of the current line.
│ C-b : prev-char -> move the cursor
to the previous character.
│ C-c : break -> cancel edition.
│ C-d : interrupt-or-delete-next-char -> interrupt if at
the beginning of an empty line, or delete the next character.
│ C-e : goto-eol -> move the cursor
to the end of the current line.
│ C-f : next-char -> move the cursor
to the next character.
│ C-g : cancel-macro -> cancel the
current macro.
│ C-h : delete-prev-char -> delete the
character before the cursor.
│ C-k : kill-next-line -> cut everything
until the end of the current line.
│ C-l : clear-screen -> clear the
screen.
│ C-m : accept -> accept the
current input.
│ C-n : next-line -> move the cursor
to the next line.
│ C-p : prev-line -> move the cursor
to the previous line.
│ C-r : prev-search -> search backward
in the history.
│ C-s : next-search -> search forward
in the history.
│ C-u : kill-prev-line -> cut everything
until the beginning of the current line.
│ C-w : kill -> cut the current
region to the clipboard.
│ C-x ( : start-macro -> start a new
macro.
│ C-x ) : stop-macro -> end the current
macro.
│ C-x e : play-macro -> play the last
recorded macro.
│ C-x C-e : edit-with-external-editor -> edit input with
external editor command.
│ C-x C-k tab : insert-macro-counter -> insert the
current value of the macro counter.
│ C-x C-k C-a : add-macro-counter -> adds a value to
the macro counter.
│ C-x C-k C-c : set-macro-counter -> sets the value
of the macro counter.
│ C-y : yank -> paste the
contents of the clipboard at current position.
│ C-z : suspend -> suspend
edition.
│ #
└────
You can also override these in `~/.lambda-term-inputrc'. Here's
what I
have:
┌────
│ $ cat ~/.lambda-term-inputrc
│ [read-line]
│ C-p: complete-bar-prev
│ C-n: complete-bar-next
└────
I overrode these to use Ctrl (`C') instead of Meta (`M') because
with
my setup (Mac Terminal.app) the meta character (which I would
expect
to be mapped to the Command key) doesn't seem to work.
Creating OCaml Platform
═══════════════════════
Archive:
<https://discuss.ocaml.org/t/creating-ocaml-platform/3971/1>
Anton Kochkov said
──────────────────
Everyone knows there is a [Haskell Platform] and [Stack]. And
Rust is
[working] with a similar concepts for a few years already. Maybe
it
makes sense to start working towards this goal in OCamlverse as
well?
The relevant thing is [Duniverse] by @avsm, but the platform
concept
should go further, helping to download the bundle at once,
instead of
installing hundreds of packages manually. I see there is
actually a
[site page] for the OCaml Platform, but it is basically empty.
It even makes sense to include Visual Studio Code with OCaml
plugins
installed.
[Haskell Platform] <https://www.haskell.org/platform/>
[Stack] <https://docs.haskellstack.org/en/stable/README/>
[working]
<https://aturon.github.io/blog/2016/07/27/rust-platform/>
[Duniverse] <https://github.com/avsm/duniverse>
[site page] <http://ocaml.org/platform/>
Vasile Rotaru replied
─────────────────────
As I understand it, is not there yet. See this [talk] by Anil
Madhavapeddy (@avsm)
[talk] <https://www.youtube.com/watch?v=oyeKLAYPmQQ>
Other OCaml News
════════════════
From the ocamlcore planet blog
──────────────────────────────
Here are links from many OCaml blogs aggregated at [OCaml
Planet].
• [Frama-C 19.0 (Potassium) is out. Download ithere.]
[OCaml Planet] <http://ocaml.org/community/planet/>
[Frama-C 19.0 (Potassium) is out. Download ithere.]
<http://frama-c.com/index.html>
Old CWN
═══════
If you happen to miss a CWN, you can [send me a message] and
I'll mail
it to you, or go take a look at [the archive] or the [RSS feed
of the
archives].
If you also wish to receive it every week by mail, you may
subscribe
[online].
[Alan Schmitt]
[send me a message] <mailto:alan.schmitt at polytechnique.org>
[the archive] <http://alan.petitepomme.net/cwn/>
[RSS feed of the archives]
<http://alan.petitepomme.net/cwn/cwn.rss>
[online] <http://lists.idyll.org/listinfo/caml-news-weekly/>
[Alan Schmitt] <http://alan.petitepomme.net/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20190625/109900e2/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 487 bytes
Desc: not available
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20190625/109900e2/attachment-0001.pgp>
More information about the caml-news-weekly
mailing list