[erlang-questions] List comprehension puzzler
lloyd@REDACTED
lloyd@REDACTED
Tue Sep 20 15:44:30 CEST 2016
'Lo again Hernando,
Shortly after I responded to your post I realized that you might be interested in the problem that led to my list comprehension puzzler question:
I'm working on a web application that requires users to enter International Standard Book Numbers (ISBNs). Thus I need a function to validate the format of user input.
ISBNS are either 10 or 13-digits. The standard specifies a check-sum algorithm, but that seemed too complicated for my purposes. So, after struggling with the list comprehension puzzler and Dan Gudmundsson's helpful input, I came up with this:
isbn_format_valid(ISBN) ->
D = fun(I) -> (I >= $0) and (I =< 9) end,
NotIntegers = [I || I <- ISBN, D(I) == true],
Flag1 = NotIntegers == [],
Flag2 = (length(ISBN) == 13) or (length(ISBN) == 10),
Flag1 and Flag2.
As you can see, our minds ran down the same track.
There may be a faster, more elegant, way to solve the problem, but this seems to do the job. Now if I can only figure out how to use the Library of Congress API to retrieve book data...
Thanks again for your post,
Lloyd
-----Original Message-----
From: "Lloyd R. Prentice" <lloyd@REDACTED>
Sent: Tuesday, September 20, 2016 12:41am
To: "Hernando Gisinger" <hgisinger@REDACTED>
Cc: "erlang-questions@REDACTED" <erlang-questions@REDACTED>
Subject: Re: [erlang-questions] List comprehension puzzler
_______________________________________________
erlang-questions mailing list
erlang-questions@REDACTED
http://erlang.org/mailman/listinfo/erlang-questions
Hi Hernando,
I came up with almost the exact same code after Dan Gudmunsson pointed out the error of my ways.
Many thanks for the solution.
Best wishes,
Lloyd
Sent from my iPad
> On Sep 19, 2016, at 11:01 PM, Hernando Gisinger <hgisinger@REDACTED> wrote:
>
> Hello
>
> 1> IsDigit = fun(C) -> C >= $0 andalso C =< $9 end.
> #Fun<erl_eval.6.52032458>
> 2> S = "123a456".
> "123a456"
> 3> [IsDigit(I) || I <- S].
> [true,true,true,false,true,true,true]
>
>
> 2016-09-18 13:56 GMT-03:00 <lloyd@REDACTED>:
>> Hello,
>>
>> Now this I would not expect:
>>
>> 4> S = "123a456".
>> "123a456"
>>
>> 5> is_integer(S).
>> false
>>
>> 6> [is_integer(I) || I <- S].
>> [true,true,true,true,true,true,true]
>>
>> Please tell me what I don't understand.
>>
>> Many thanks,
>>
>> LRP
>>
>>
>> *********************************************
>> My books:
>>
>> THE GOSPEL OF ASHES
>> http://thegospelofashes.com
>>
>> Strength is not enough. Do they have the courage
>> and the cunning? Can they survive long enough to
>> save the lives of millions?
>>
>> FREEIN' PANCHO
>> http://freeinpancho.com
>>
>> A community of misfits help a troubled boy find his way
>>
>> AYA TAKEO
>> http://ayatakeo.com
>>
>> Star-crossed love, war and power in an alternative
>> universe
>>
>> Available through Amazon or by request from your
>> favorite bookstore
>>
>>
>> **********************************************
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>
More information about the erlang-questions
mailing list