[eeps] comments on eep8
Wed Jan 9 18:40:39 CET 2008
Joe Armstrong wrote:
> 10) In the spirit of 9) I'd like to have user defined type checking
> @spec xxx(foo:bar) -> baz:oop
> This means that the arg 1 of xxx is of type X if foo:bar(X)
> evaluates to true.
> The point of this is to move towards describing the properties of a system
> which can only be checked at run-time and not compile time.
> Then we could have types like fileMustExist() meaning the file
> must exist at run time.
> Today a file is just a string (type wise) but we might like to document
> the fact that this string represents a file that *must* exist.
That isn't a good example, because whether or not the file exists is not
a property of the string. A file with a given path relative to a given
filesystem root may exist one second and not exist the next, so the use
of predicate types to assert its existance would be inherently prone to
But I agree that predicate types can be useful, when they specify pure
boolean functions of immutable values.
More information about the eeps