Typespecs are written using the @spec module directive, followed by function_name(argument_type) :: return_type. This module directive is placed right before the definition of the function we're annotating.
To demonstrate how to apply typespecs to a function, let's bring back our palindrome? function:
$ cat examples/string_helper.exdefmodule StringHelper do def palindrome?(term) do String.reverse(term) == term endend
Given that the module name is StringHelper, and that it's using functions from the String module, we can see that this function receives a string. As it uses the == operator, and also hinted at by the trailing ? on the function name, we know this function returns a Boolean. With this information, writing the typespec ...