data Point = Point Float Float deriving (Show)
data Shape = Circle Point Float | Rectangle Point Point deriving (Show)
: Bir noktayı tanımlayan o
Bildirimi Veri türü ve değer yapıcı için aynı adı kullandık. Bu, özel bir anlamı yoktur, ancak tek bir değer yapıcısı varsa, türle aynı adı kullanmak yaygındır.
Şimdi benim varsayım data Point = ...
veri türüdür ve ... = Point Float...
değer yapıcı olmasıdır.
Soruma ilişkin soru: Haskell'deki veri türü ve değer yapıcı için aynı adı kullanmak yaygın mıdır?
Evet, öyle. Bununla birlikte, genellikle "data" yerine "newtype" kullanırız. Örneğin, 'State' genellikle şöyle tanımlanır:' newtype State a a = State {runState :: s -> (a, s)} '. –
@AaditMShah Yalnızca tek alanlı kurucular için çalışır. Her seferinde bir tuple açmak istemediğiniz sürece, 'Point' için 'newtype' kullanamazsınız. – Zeta
Haskell'i, bazı dillerde (ör. Java), yapıcının * her zaman * ile aynı adı taşıyan birisine açıkladığımda bana bir kez işaret ettim. Yani, Haskell'e gelen biri için, farklı kurucu isimlere sahip olmak kafa karıştırıcı olabilir. – user2297560