josevalim

josevalim

Creator of Elixir

Proposal: IEx hints

In Elixir we are continuously trying to improve the experience for developers learning the language. However, there are still common road blocks users run into, despite of the tips and warnings put into the learning materials.

This proposal is about a hints mechanism for IEx that will allow us to print some information and guidance to users in common situations.

As an example, imagine the situation where IEx prints a list as a char list for the first time, a situation newcomers often find themselves in:

iex(1)> Enum.map([0, 1, 2], & &1 + 10)
‘\n\v\f’

In such cases, we could print hints, such as (don’t worry about the hint content for now):

Did you expect a different result than '\n\v\f'?

By default Elixir prints a list of ascii characters in single quotes.
Since [10, 11, 12] is a list of characters, you saw the '\n\v\f' result
above.

Whenever you are in IEx and you are not sure about what a data type means,
use the `i/1` helper to give you more information:

    i('abc')

Each hint will be show only once. There will also be a function to disable all hints.

Before moving forward, the Elixir team has two questions:

  1. Would such hints be generally helpful?

  2. More importantly, which hints do you believe we could show on IEx? Hints should be valid language idioms that may be confusing when you first experience it. If an invalid construct is confusing, let’s say it has a poor error message, then we should improve the error message instead of adding a hint.

Please let us know when the hint should trigger and what we should suggest.

Thank you.

Note: This is an on-going discussion. Before joining the thread, please check the current discussion and see if your feedback and concerns haven’t already been brought up.

Most Liked

OvermindDL1

OvermindDL1

I’d personally think that would be greatly useful for new people yes.

OvermindDL1

OvermindDL1

Maybe instead of ‘default’ persistence it defaults to per-session, but at the bottom of each it says to run ‘some’ command to disable globally, which would add some kind of flag or so into the ~/.iex.exs or whatever file that disables globally.

I can very much see it being slightly irritating on new installs, but something like that would make it very easy to disable.

Neurofunk

Neurofunk

something great would be to be able to invoke a hint, independently of the context :slight_smile:

Last Post!

dwahyudi

dwahyudi

Rather than full text hints, could we create some knowledge base on the web?

So iex will just return the link to that knowledge base.

Enum.map([0, 1, 2], & &1 + 10)
'\n\v\f'

Hints: please visit https://elixir-lang.org/kb/45/ascii-char-in-single-quotes

With this kb, we can have better conversation when referring to hints.

“which hint are you talking about?”
“this one: https://elixir-lang.org/kb/110/genserver-call-and-cast

and if you want to update the hint, you could just update the kb on the web.

Where Next?

Popular in News Top

josevalim
It is a maintenance release, so nothing out of the ordinary. Please see the release notes for more information: Release v1.5.3 · elixir-...
New
josevalim
Hi everyone, We have just released the second release candidate for the next Elixir version: v1.7.0-rc.1. The CHANGELOG and precompiled...
New
josevalim
Announcement: Elixir v1.8 released - The Elixir programming language Release notes: Release v1.8.0 · elixir-lang/elixir · GitHub Thanks...
New
Elixir
Release: Release v1.11.0-rc.0 · elixir-lang/elixir · GitHub Over the last releases, the Elixir team has been focusing on the compiler, b...
New
josevalim
Release: https://github.com/elixir-lang/elixir/releases/tag/v1.13.3 1. Enhancements Mix [mix format] Supply file and line to formatter ...
New
Elixir
Official announcement: Elixir v1.15 released - The Elixir programming language This release requires Erlang/OTP 24 and later. Elixir v1...
New
Elixir
Code snippets in diagnostics Elixir v1.15 introduced a new compiler diagnostic format and the ability to print multiple error diagnostics...
New

Other popular topics Top

Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
ashish173
I am using Ecto timestamps with postgres, I can see the timestamps() use the :naive_dateime but for my use case I wanted to store the ti...
New
sen
Hi All, I set a environment variables in dev.exs , like below code. when i start server, how can i set the ${enable} value? thanks. d...
New
gausby
I asked this very same question on twitter and got some interesting feedback, but I thought it would be a good question to ask here as we...
1207 40082 209
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New

We're in Beta

About us Mission Statement