[英]Link two data types together in Haskell
我絕對是Haskell的初學者。 我想構造兩個數據類型,例如:
data A = A B
data B = B A
(當然還有其他數據)
我想創建一個這樣的對象:
A (B this)
這應該是A
。 A
應該包含對B
的引用,而B
應該包含對A
的引用。
在功能編程中,如何將兩個數據對象鏈接在一起?
完全按照您所說的方式:
recursiveA :: A
recursiveA = A recursiveB
recursiveB :: B
recursiveB = B recursiveA
或者,如果您喜歡簡短的話,
recursiveA = fix $ A . B
但實際上,這是毫無用處的。 在功能性語言,你不想去想參考1〜2的對象。 我們談論值 ,並且對值的“引用”與值本身是同一回事,因為我們沒有可變性來破壞事情。 您不能像在Java中那樣使用引用。
將兩種類型鏈接在一起的最明顯(通常是最佳)方法是將它們都放入另一個data
。
data AandB = AandB A B
1 好吧,還有IORef
,為您提供了可變的參考...但這確實是一個令人討厭的現實世界中的住宿黑客,而不是您初學者應該使用的東西。
順便說一句,在 2 BTW中,當說“對象”時,許多數學上更傾向於傾斜的Haskeller都將表示類型 :類型是Hask 類別的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.