簡體   English   中英

關於限制的Haskell類定義問題

[英]Haskell class definition question about restrictions

class IndexSelect k (m :: k -> (* -> *) -> *) | m -> k where
    type Restriction m (p :: k) :: Constraint
    indexSelect :: Restriction m p => Sing (p :: k) -> Proxy m -> LocalDb f -> f (TableEntity (m p))

我是Haskell語言的新手。 我在我剛剛開始的公司的代碼庫中的某些代碼中解密類定義時遇到了麻煩。 這是做什么的?

這里有很多事情要做。 我將首先向您介紹第7.6類和實例聲明7.7類型系列 ,以及7.8.4 GHC語言擴展文檔的明確資格 (我絕不是任何一個問題的專家,並點擊你的問題,希望有人提供進一步的啟示。)

我們正在定義一個名為IndexSelect的多參數類型類,其參數為km (多參數類型7.6.1.1)

m的第二個參數給出了一個明確的類型限定: k -> (* -> *) -> * in English m必須是一個函數,它接受一個k和一個函數並返回一個值。 (7.8.4顯性定量)

這個類有一個函數依賴| m -> k | m -> k m的選擇必須唯一地確定k給定該函數的名稱,這意味着集合m必須只有一種合理的密鑰k (7.6.2功能依賴)

該類形成索引類型族type Restriction m (p :: k) :: Constraint 它出現在類定義中,因此它是關聯類型的同義詞。 (7.7.2.1.1相關類型的家庭聲明)。 它需要一些m和一個p ,它必須是k型並導致約束。

該類有一個列出的方法indexSelect ,可能猜測該方法可以從集合中提取信息。 不知道SingLocalDbTableEntity什么,我不能多說。

暫無
暫無

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

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