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:
Posting Komentar