Эрланг реализует различные функции для проверки, является ли список плоским списком в модуле io_lib.
Один хороший выбор для проверки ваших конкретных IP-строк - io_lib: latin1_char_list (Term)
http://erlang.org/doc/man/io_lib.html#latin1_char_list-1
io_lib: latin1_char_list / 1 Реализация функции:
latin1_char_list([C|Cs]) when is_integer(C), C >= $\000, C =< $\377 ->
latin1_char_list(Cs);
latin1_char_list([]) -> true;
latin1_char_list(_) -> false.
Если вы хотите проверить плоские списки Юникода, вы можете использовать
io_lib: char_list (Term)
http://erlang.org/doc/man/io_lib.html#char_list-1
io_lib: char_list / 1 реализация функции:
char_list([C|Cs]) when is_integer(C), C >= 0, C < 16#D800;
is_integer(C), C > 16#DFFF, C < 16#FFFE;
is_integer(C), C > 16#FFFF, C =< 16#10FFFF ->
char_list(Cs);
char_list([]) -> true;
char_list(_) -> false.
Проверьте документацию модуля io_lib для других подобных функций.
Обратите внимание, что если какая-либо новая функция erlang отсутствует в текущей версии erlang, поддерживаемой вашим проектом, вы можете просто скопировать реализацию, предоставляемую новыми версиями erlang, и добавить их в собственный модуль. Найдите последнюю версию исходного кода erlang / lib / * / src и просто получите новые функции, которые вам нужны.