[erlang-questions] Checking Types at Runtime

Eric Merritt ericbmerritt@REDACTED
Wed Jul 13 02:31:32 CEST 2011


Thats not possible at the moment. Dialyzer will do a good job at
compile time warning you that something is wrong. I think thats about
your best bet.

Now, as I understand it this type information *is* retained in the
compiled beam file. So you could possibly write something that will
check the types for you, but I don't think it would be very
performant.

I think the right answer, at least with out more details, is to do a
good job declaring specs and using them, while relying on dialyzer to
tell you when there are problems.

On Tue, Jul 12, 2011 at 6:26 PM, 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
>
>



More information about the erlang-questions mailing list