[Haskell-cafe] Re: Wikipedia on first-class object

Cristian Baboi cristi at ot.onrc.ro
Fri Dec 28 07:58:53 EST 2007


Here is how I want print to be in Haskell

print :: (a->b) -> (a->b)

with print = id, but the following "side effect":

- I want to call the print function today, and get the value tomorrow.



On Fri, 28 Dec 2007 12:03:04 +0200, apfelmus <apfelmus at quantentunnel.de>  
wrote:

> Cristian Baboi wrote:
>>  http://en.wikipedia.org/wiki/First-class_object
>>  The term was coined by Christopher Strachey in the context of  
>> “functions as first-class citizens” in the mid-1960's.[1]
>>  Depending on the language, this can imply:
>> 1.  being expressible as an anonymous literal value
>> 2.  being storable in variables
>> 3.  being storable in data structures
>> 4.  having an intrinsic identity (independent of any given name)
>> 5.  being comparable for equality with other entities
>> 6.  being passable as a parameter to a procedure/function
>> 7.  being returnable as the result of a procedure/function
>> 8.  being constructable at runtime
>> 9.  being printable
>> 10. being readable
>> 11. being transmissible among distributed processes
>> 12. being storable outside running processes
>>  I'll guess that 5,9,12 does not apply to Haskell functions.
>
> Exactly, together with 10 and 11 (when the distributed processes are on  
> different machines).
>
> But there is good reason that those things can't be done in Haskell.  
> With extensional equality (two functions are considered equal if they  
> yield the same result on every possible argument) number 5 is  
> undecidable. Similarly, there cannot be functions
>
>    print   :: (Int -> Int) -> String
>    compile :: String -> (Int -> Int)
>
> with
>
>    compile . print = id
>
> A  print  function based on an intensional representation (assembly,  
> byte code, etc.) would have to distinguish extensionally equal functions
>
>    print f ≠ print g   although   f = g
>
> which is not allowed.

> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
>
> ________ Information from NOD32 ________
> This message was checked by NOD32 Antivirus System for Linux Mail  
> Servers.
>   part000.txt - is OK
> http://www.eset.com




________ Information from NOD32 ________
This message was checked by NOD32 Antivirus System for Linux Mail Servers.
  part000.txt - is OK
http://www.eset.com


More information about the Haskell-Cafe mailing list