[erlang-questions] lists
zxq9
zxq9@REDACTED
Tue Sep 17 05:51:09 CEST 2019
On 2019/09/17 8:44, Sam Overdorf wrote:
> How do I tell the difference between:
> "sam1"
> ["sam1","sam2"]
> They are both lists but behave differently when I apply
> [H|T] = List.
> H = "s"
> H = "sam1".
> The second one is what I want and then stop breaking them down.
"sam1" is syntactic sugar for [$s, $a, $m, $1].
["sam1", "sam2"] is likewise syntactic sugar for
[[$s, $a, $m, $1], [$s, $a, $m, $1]]
With this in mind, if I want to take the first 's' character from "sam1"
I can do:
[H | _] = "sam1".
If I want to get the first character from the second string in a list of
strings I could do this:
1> [_, [H | _]] = ["sam", "bob"].
["sam","bob"]
2> H.
98
3> $b.
98
The syntax $[character] is a shorthand for the unicode codepoint of a
given character. 98 is the numeric value of the character 'b', so that
is what we see there.
With this in mind, I can construct the string/list "sam" by finding the
codepoints for the characters 's', 'a', and 'm' and putting the numeric
values in a list:
4> $s.
115
5> $a.
97
6> $m.
109
7> [115, 97, 109].
"sam"
Play around with lists inside of lists a bit and you'll find that a list
of strings is just a nested list. There are many convenience functions
for operating over deep lists of strings like this in the unicode and
string modules.
-Craig
More information about the erlang-questions
mailing list