No, obj is a method of the Objects class. you've already declared it
in the instance of Objects Object

your code works just fine here. adding:

> mycar = Car Blue

> o:: Object Car Integer
> o = obj mycar 4

ghci says...

*Objects> :t obj
obj :: (Objects o t i) => t -> i -> o t i
*Objects> o
Obj (Car Blue) 4

But I hope you read my last email in the other thread you started...

Tom

On Thu, Feb 3, 2011 at 10:15 AM, Ivan Lazar Miljenovic
<[email protected]> wrote:
> On 3 February 2011 21:09, Patrick Browne <[email protected]> wrote:
>> Hi,
>> I am studying type classes using examples from the literature [1].
>> The attached code is a formalization of basic object oriented ideas. The
>> particular approach seems to be built on the concepts of: thing, object,
>> and identifier.
>> I have no intension to implement anything or significantly change the
>> code below. Rather, I am trying to understand the code as it stands.
>> I include a number of test runs which seem OK, but I cannot get the
>> *obj* function to work.
>>
>> obj :: t -> i -> o t i
>> obj t i = Obj t i
>
> The type signature says "Given any `t' and any `i', this will return
> any `o t i' (for some unspecified type `o')".  However, your actual
> implementation uses a specific data-type, namely Object for `o'.
> Change the type signature to be "obj :: t -> i -> Object t i".
>
> --
> Ivan Lazar Miljenovic
> [email protected]
> IvanMiljenovic.wordpress.com
>
> _______________________________________________
> Haskell-Cafe mailing list
> [email protected]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>

_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to