polovy
I am going through some tutorials, and one of the tasks is to create a list of items by taking first two elements of the existing item and appending them to the end of said list. The problem I have is that for some numerical values in the list, I get a strange response returned.
The Cos:
defmodule Tutorial do
def mirror_row(row) do
[first, second | _tail] = row
row ++ [second, first]
end
end
the results I get are:
iex> Maps.mirror_row([1, 2, 3])
[1, 2, 3, 2, 1]
iex> Maps.mirror_row([121, 12, 123])
~c"y\f{\fy"
The 1st result is as expected, but the 2nd I would expect [121, 12, 123, 12, 121].
What is actually happening here and why?
I chacked this for different values and it does not make sense to me.
Some other results:
iex> Maps.mirror_row([123, 122, 121])
~c"{zyz{"
iex> Maps.mirror_row([123, 22, 12])
[123, 22, 12, 22, 123]
iex> Maps.mirror_row([121, 122, 123])
~c"yz{zy"
iex> Maps.mirror_row([121, 12, 123])
~c"y\f{\fy"
iex> Maps.mirror_row([121, 12, 13])
~c"y\f\r\fy"
iex> Maps.mirror_row([121, 22, 13])
[121, 22, 13, 22, 121]
Thanks.
Trending in Questions
Hi all,
I’m working on a Phoenix project where I need to make external HTTP requests and I’m trying to choose between Req and HTTPoison....
New
I’m very new to Elixir, so sorry if this is a silly question:
I am wondering what happens to the mailbox of a process when the machine i...
New
How do I tell Hologram not to escape HTML when substituting into templates?
{Textile.render(@product.long_description)}
escapes the HTM...
New
Background
When trying to execute mix release on a Windows 11 machine for a Phoenix project I get the following error:
* assembling mark...
New
I’d like to create a file with 600 permissions (rw-------), but there’s a race condition if I create it and then change the permissions. ...
New
Is there a way to import record definitions in the iex shell for pretty printing (similar to the rr command in the erl shell)? This woul...
New
When I use Mix.install with a git dependency, using git@github.com:... how do I change the SSH identity used?
I’ve got two Github accoun...
New
Other Trending Topics
Hey there,
I haven’t seen a list of useful Elixir specific skills for the popular AI tools yet so I’m starting one here with my first.
...
New
Hi everyone :waving_hand:
I wanted to share something I’ve been building — NowBlind, a random chat app designed to help people discover ...
New
I fully migrated to my own harness from Anthropic/Gemini and I think it’s time to share it. Welcome DSH, the DeepSeek Harness, fully writ...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
(I just needed to vent somewhere and LinkedIn is full of hope, or hype, I’m not sure which exactly)
AI dream has many faces, but general...
New
Localize is the next generation localisation library for Elixir. Think of it as ex_cldr version 3.0. The first version will be released ...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #code-sync
- #discussion
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #ai
- #umbrella
- #elixirconf-us
- #full-time-contract
- #podcasts-by-brainlid
- #blog-post
- #ecto-query
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #elixirconf-eu
- #processes
- #security
- #api
- #forms
- #performance










Showing Posts 1 to 10- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
LostKobrakai
What you’re seeing are charlists using the ~c sigil. They are the exact data you expected, but printed as text to allow interoperability with erlang, which uses charlists as their default string type: List — Elixir v1.20.2
polovy
I suspected that this may be something like that. Is there a way of ‘forcing’ a standard list view in the console?
I assume that this will make no difference for the program (ie. I can pass the list to another function and it will work).
LostKobrakai
The link I posted shows how to configure the inspect protocol that way.
IEx.configurecan be used to configure iex with custom inspect options. Indeed the application itself doesn’t care. This is just something relevant to printing the data for human consumption.polovy
Thanks.
dimitarvp
Run this manually inside
iexor put it in a file called.iex.exsat the root of your project and it will be ran automatically oniexstartup in that directory.sbuttgereit
As an aside, I completely forgot this was out here…
Which, naturally, includes this very issue. I’m guessing this post is not very visible and only appears in searches… which in a case like this is more likely to not appear in a search since you’d kinda got to know what the issue was in the first place to hit the right search terms for it.
It’s a good idea… but I wonder if there’s a way to call this out for special attention so that it isn’t forgettable for those that might add to it or discoverable for those that might need it.
arcanemachine
Cool, TIL. But this just flips the confusion the other way around, no?
I’m guessing the tradeoff is that one is less likely to find themself surprised when a charlist is represented as a list of integers, compared to the more-common case where a list of integers is rendered as a charlist, which is a very common surprise for beginners. I suppose that if you’re deliberately working with charlists, you’re probably deep enough into the Elixir rabbit-hole to understand what is happening behind the scenes.
To confirm my obvious suspicion, the behaviour can be reverted to the default with this line:
Thanks again for another excellent tip. I’m gonna dogfood this one for a bit…
dimitarvp
Yes, I am guessing the same. I don’t like the status quo either but unless we’re willing to go contribute to OTP itself (or maybe only to Elixir? not sure actually) then it’s going to stay that way and we should make the crutches obvious. At least they restore things to a bit saner state (hopefully).
arcanemachine
Hey, I’m in no position to complain while I’m standing on the shoulders of giants. But I have not encountered this tip before, and I think it is definitely worth knowing.
It’s funny too, because it’s one of those things that’s obvious in retrospect. I’ve used a line like that to temporarily change the charlist rendering style. I just never though to put it in my IEx config.
dimitarvp
I agree. It’s not obvious. I’d even argue this config should be the default; I really don’t see who would derive an actual tangible value out of seeing some integer lists as charlists.