オブジェクト指向と関数型言語

[id:lethevert:20050731:p3]の続き。
オブジェクト指向言語は、メソッド呼出にthis(self)ポインタが含まれるから、関数ポインタが使えないという趣旨のことを書いたけれど、そもそも関数型言語のようにカリー化がサポートされているなら、メソッドでも、それ以上に複雑なものであっても、関数(メソッド)を束縛することはできるはず。
例によっていい加減な言語(Clean風?)で、コンストラクタは、こんな感じにかけるかな?

type Foo = record
  value1    :: Int
  value2    :: Int
  getResult :: () -> Int

Create_Foo :: Int Int -> Foo
Create_Foo x y
  = Foo
      value1 = x
      value2 = y
      getResult = calc foo
where
  calc this ()
    = 3*this.value1*this.value1 + 2*this.value2 + 1