簡體   English   中英

在Haskell中將兩種數據類型鏈接在一起

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM