簡體   English   中英

Haskell 類型 class 層次結構在 Java

[英]Haskell type class hierarchy in Java

我用類似於 Haskell 類型類的 Java 接口編寫了一個,以及實現所有“可派生”方法的抽象類(例如Monad.join可以使用>>=return編寫)。 這是我計划的結構([] 表示接口尚不存在):

                      Applicative <= Alternative <-,     
Functor <= Pointed <= Applicative <= Monad <= MondPlus
Functor <= Copointed <= Comonad      Monad <= [MonadFix]

Category <= Arrow <= ArrowChoice   
            Arrow <= [ArrowApply]
            Arrow <= [ArrowLoop] 
            Arrow <= [ArrowZero] <= [ArrowPlus]
Bifunctor
  • 這種層次結構“正確”嗎?
  • 特別是,MonadPlus 實現 Alternative 是否正確?
  • 我應該從 MonadPlus 中拆分 MonadZero 嗎? ArrowZero 和 ArrowPlus 的相同問題
  • 當 class 實現多個“端點”時,如何減少代碼重復(例如,Maybe 是 MonadPlus 和 MonadFix,Kleisli 是 ArrowEverything)
  • Arrow 理論上也可以擴展 Applicative。 目前我有一個返回 Applicative 的 Arrow 方法,因為它看起來像類型curring 使得 inheritance 在這里不可能。
  • 我還缺少其他不明顯的“連接”(如箭頭->應用)嗎?
  • 此層次結構中缺少哪些“有用的”類型類?
  1. 您應該確保查閱typeclassopedia

  2. Edward Kmett 一直在做 yeoman 的工作,試圖構建一個豐富的、健全的、核心類的層次結構,從半組開始並向前發展。 值得直接與他對應,但看看semigroupoids和他上傳的許多相關包以獲得一些指示:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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