[Haskell-cafe] How to declare a Typeless Function

Joe Fredette jfredett at gmail.com
Fri Jul 3 08:31:08 EDT 2009


It's important to note that such a function is not "Typeless" but rather 
"Polymorphic" -- that is, it is a type which can be satisfied for many 
values of it's type variables.

For instance, the function `(+) :: Num a => a -> a -> a` is polymorphic, 
since it's one type variable can be satisfied by any instance of the 
`Num` class. It's not that
the `(+)` function is "Typeless" (implying that it has no type) 
precisely the opposite, it has _many_ types. Haskell is clever enough to 
figure out which one you mean as you use it (most of the time, anyway).

/Joe

Magnus Therning wrote:
> On Fri, Jul 3, 2009 at 4:43 AM, Alexander
> Dunlap<alexander.dunlap at gmail.com> wrote:
>   
>> swap :: Array (Int, Int) a -> [Int] -> Array (Int, Int) a
>>
>> The lowercase "a" means that that type variable is polymorphic, i.e.
>> it can be any type.
>>     
>
> Another option would be to simply not put in type of 'swap', load it
> in ghci and see what the compiler says the type is :-)
>
> /M
>
>   
>> On Thu, Jul 2, 2009 at 8:05 PM, Fernan Bolando<fernanbolando at mailc.net> wrote:
>>     
>>> Hi
>>>
>>> I have a function that swaps rows of an array of double
>>>
>>> swap :: Array (Int,Int) Double -> [Int] -> Array (Int,Int) Double
>>>
>>> I then create a function that swaps rows of arrays of Complex Double
>>>
>>> swap :: Array (Int, Int) (Complex Double) -> [Int] -> Array (Int, Int)
>>> (Complex Double)
>>>
>>> In reality the function swap does not care whether its working on a
>>> double or a complex number.
>>> how do I declare swap so that it will work whether it's a complex or a
>>> double array.
>>>
>>> I tried googling but I wasn't sure what to google.
>>>
>>> fernan
>>> --
>>> http://www.fernski.com
>>> _______________________________________________
>>> Haskell-Cafe mailing list
>>> Haskell-Cafe at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>
>>>       
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
>>     
>
>
>
>   
-------------- next part --------------
A non-text attachment was scrubbed...
Name: jfredett.vcf
Type: text/x-vcard
Size: 307 bytes
Desc: not available
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20090703/89c365aa/jfredett.vcf


More information about the Haskell-Cafe mailing list