Minggu, 21 Desember 2008

Tipe Sinonim Pada Program Haskel

Tipe Sinonim yang ada diHaskell merupakan alat yang mudah dan menyenangkan. Dengan tidak adanya tipe sinonim dalam Haskell, tidak akan banyak mempengaruhi.
Berdasarkan case, berhadapan secara konstan dengan daftar three-dimensional poin-poin suatu fungsi mempunyai jenis :

[( Double,Double,Double)]-> Ganda-> [( Double,Double,Double)].

Ketika akan menempatkan tipe signature pada semua fungsi utama, kemudian, mengetik [( Double,Double,Double)] membutuhkan waktu yang lama. Untuk mendapatkan type ini, dapat menggunakan sebuah tipe sinonim :

type List3D= [( Double,Double,Double)]

Tipe Signature pada fungsi dapat ditulis :

List3D-> Ganda-> List3D.


Contoh Tipe Sinonim yang dihubungkan

Data yang dihubungkan, lebih baik dibanding ketergantungan fungsional. Disini ada suatu contoh bagaimana cara depenency program fungsional untuk berhubungan dengan tipe sinonim.

Contoh ketergantungan Fungsional yang asli sebagai berikut :

class Collects e ce | ce => e where

empty :: ce

insert :: e => ce => ce

member :: e => ce => Bool

toList :: ce => [e]

Dengan tipe sinonim yang dihubungkan, dapat ditulis sebagai berikut :

class Collects ce where

type Elem ce

empty :: ce

insert :: Elem ce => ce => ce

member :: Elem ce => ce => Bool

toList :: ce => [Elem ce]

Suatu kejadian dengan ketergantungan Fungsional :

instance Eq e => Collects e [e] where

empty = []

insert e l = ( e : l )

member e [] = False

member e ( x:xs) | e == x = True

| otherwise = member e xs

toList l = l

Dengan tipe sinonim yang dihubungkan, menjadi :


instance Eq e => Collects e [e] where

type Elem [e] = e

empty = []

insert e l = ( e : l )

member e [] = False

member e ( x:xs) | e == x = True

| otherwise = member e xs

toList l = l

Cara membuat tipe sinonim

Misalnya tipe sinonim digunakan untuk membuat program anniversary. Kita bisa membuat tipe sinonim dengan cara yang mudah yaitu, membuat tipe ini mampu membersihkan String dari nama Anniversary, tetapi juga masih mampu menjalankan program ini seperti biasanya.

Pendeklarasian type ini adalah : type Name = String. Dari sini bisa dikatakan bahwa Name adalah sinonim untuk String. Beberapa fungsi dari penggunaan String adalah untuk mengambil fungsi Name dan sebaliknya.

Untuk contoh String secara standar didefinisikan : type String = [char]

Tidak ada komentar: