[erlang-questions] Checking Types at Runtime

Tristan Sloughter tristan.sloughter@REDACTED
Wed Jul 13 16:13:19 CEST 2011


Yeah, I was hoping for something that would work with user defined typed.

I assume parse transforms when parsing a record have the type information?
If so I think I can use that to generate the necessary functionality I'm
looking for.

Tristan

On Wed, Jul 13, 2011 at 4:42 AM, Torben Hoffmann <torben.lehoff@REDACTED>wrote:

> For the basic types you can you a when guard in the function clauses (or
> case clauses):
>
> my_magic(#user{password=PW}) when is_binary(PW) -> ...
>
> But that is probably not enough for you.
>
> Cheers,
> Torben
>
> On Wed, Jul 13, 2011 at 01:26, Tristan Sloughter <
> tristan.sloughter@REDACTED> wrote:
>
>> I'm pretty sure this isn't possible but I wanted to be sure before working
>> around the lack of it.
>>
>> if I have a type and record like:
>>
>> -type password() :: binary().
>>
>> -record(user, {username :: binary(),
>>                     password  :: password()}.
>>
>> At run time there is no way to tell a field is suppose to be of some type
>> during runtime, right?
>>
>> Basically I'd like to be able to have generic or generated create
>> functions for records that may have to modify arguments (like a password has
>> to be encrypted from the string provided) when creating the record. So the
>> create function would pass each field, its value and its type to a transform
>> function that matches on type and returns the appropriately modified value.
>>
>> Any ideas on how to do this with type definitions or do I need to use
>> tuples and an atom like {Type, Value} for the value of every field to
>> achieve this?
>>
>> Thanks,
>> Tristan
>>
>> _______________________________________________
>> erlang-questions mailing list
>> erlang-questions@REDACTED
>> http://erlang.org/mailman/listinfo/erlang-questions
>>
>>
>
>
> --
> http://www.linkedin.com/in/torbenhoffmann
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-questions/attachments/20110713/fe2c9770/attachment.htm>


More information about the erlang-questions mailing list