cost 107 ms
使用 RankNTypes 編碼的 System-F 自然數的“case”運算符無法進行類型檢查

[英]"case" operator for System-F natural numbers coded with RankNTypes fails to typecheck

在 Haskell 中,如果啟用RankNTypes擴展 然后可以定義自然數,因為它們在 System-F 中編碼: 耶! 下一步是定義案例操作:想法是 當然這不是直接可能的。 可能的一件事是將自然數定義為通常{data Nats = Zero | Succ Nats} {data Nats = ...

多態性的等級和(im)預測性之間有什么關系?

[英]What is the relationship between polymorphism's rank and (im)predicativity?

多態性的等級和(im)預測性之間有什么關系? rank-1 多態性可以是謂語還是非謂語? k > 1的 rank-k 多態性可以是謂詞還是非謂詞? 我的困惑來自: 為什么https://en.wikipedia.org/wiki/Parametric_polymorphism在 rank ...

為什么只允許 Haskell 中的函數使用不可預測的多態性?

[英]Why is impredicative polymorphism allowed only for functions in Haskell?

在 Haskell 中我不會寫 因為 但我可以快樂地做 所以我看到 GHC 確實支持不可預測的多態性,這與上面的錯誤消息相矛盾。 為什么在這種情況下特別對待(->)類型構造函數? 是什么阻止 GHC 將此功能推廣到所有數據類型? ...

記錄鏡頭

[英]Hold a lens in a record

我有一個MyRecord記錄,我使用makeLenses創建鏡頭。 我想在該記錄中有一個字段,它本身擁有一個鏡頭,但是像其他字段一樣,也可以使用鏡頭訪問。 這是我的代碼來實現: 如果我寫myField而不是_myField ,代碼可以很好地編譯,但是這樣就不會為它生成任何鏡頭。 ...

解決不定式多態性的方法

[英]Ways around impredictive polymorphism

我是Haskell中一些更復雜的類型構造的新手,並且一直在搞亂。 我目前一直在嘗試獲取我認為應該可以進行類型檢查的功能。 以以下代碼為例: 我想要a = sumZ [YD1, YD2]進行檢查。 這個(顯然)不會因為工作的a類型變量被固定與第一YD1 。 我了解得足夠多, ...

禁止分配值

[英]Disallow assignment of values

我正在嘗試使用類型級別的權限系統,並且試圖禁止分配並非源自同一“源”的值,即: 我已經試驗了N級(或強制性)類型: 但以上兩種情況都是統一的。 如果我限制a : 兩種情況都沒有。 有沒有辦法實現這樣的目標? Haskell有可能嗎? (注意: Value構造函 ...

如何非毫不含糊地回復“也許”一個鏡頭?

[英]How to non-impredicatively return `Maybe` a lens?

像Maybe (Lens' ab)這樣的類型不起作用,因為Lens'在引擎蓋下是Rank-2類型,不能在沒有-XImpredicativeTypes擴展的類型構造函數中-XImpredicativeTypes (在GHC中不支持) 。 因此,提供一個在道德上具有類型的函數的最佳類型是什么 ...

如何在Haskell中與更高級別的類型進行交互?

[英]How does let interact with higher rank types in Haskell?

我遇到了一個更高級別的令人費解的情況。 我想出了如何使它工作,但我不明白工作和非工作版本之間的區別。 有了這些背景定義: ......這兩個功能有什么區別。 版本A(我最初寫的,不起作用) 導致: 如果您遵循我不完全理解的impredicative類型建議, ...

Haskell的通用“無類型”堆棧

[英]General 'typeless' STack in Haskell

我需要為正在處理的東西實現通用堆棧。 該堆棧應該能夠容納不同類型的元素。 例如,(1,'c',True,“ Strings”)。 支持的功能是top,pop和push。 元組是最自然的想法。 但是我也需要支持空堆棧。 此處,pop和top沒有在()上定義。 因此,我嘗試創 ...

runST與unsafePerformIO的實際意義

[英]Practical Implications of runST vs unsafePerformIO

我想要類似的東西 在Vitus評論的這個問題中 ,我基本上處於同樣的位置: [I]如果你想在某些結構中保留多態函數,你需要專門的數據類型(例如newtype I = I(forall a.a - > a))或ImpredicativeTypes。 另外,請看這個問 ...

Coq祈使邏輯中的存在量詞(系統F)

[英]Existential quantifier in coq impredicative logic (System F)

我正在嘗試將Laqda微積分中編碼為Cola的Coq邏輯連接詞編碼為SystemF。這是我編寫的一堆代碼(我認為是標准的東西) 基本上,我寫下了關於相加,析取,對與錯的消除和引入定律。 我不確定做得正確,但是我認為事情應該以這種方式進行。 現在,我想定義存在量化,但是我不知道如何進行 ...

F#中的impredicative多態性

[英]Impredicative polymorphism in F#

OCaml的Hindley-Milner類型系統不允許使用impredicative多態(àlaSystem-F),除非通過最近的記錄類型擴展。 這同樣適用於F#。 然而,有時希望將用不可預測的多態性(例如Coq)編寫的程序翻譯成這樣的語言。 Coq的OCaml提取器的解決方案是(謹慎 ...

ImpredicativeTypes的簡單示例

[英]Simple example for ImpredicativeTypes

GHC用戶指南參考以下示例描述了impredicative polymorphism擴展 : 但是,當我在文件中定義此示例並嘗試調用它時,我收到類型錯誤: 看似只是undefined , Nothing或Just undefined滿足類型檢查器。 因此,我有兩個問題: ...

Impredicative 類型與普通的舊子類型

[英]Impredicative types vs. plain old subtyping

我的一個朋友上周提出了一個看似無害的 Scala 語言問題,但我沒有很好的答案:是否有一種簡單的方法來聲明屬於某個常見類型類的事物的集合。 當然,Scala 中沒有一流的“類型類”概念,因此我們必須從特征和上下文邊界(即隱式)的角度來考慮這一點。 具體來說,給定一些表示類型類的特征T[_]和類型A ...

Haskell中的行多態:用“轉換”編寫Forth DSL的麻煩

[英]Row polymorphism in Haskell: trouble writing Forth DSL with “transformations”

我最近受到了Haskell博客活動1的啟發,試圖在Haskell中編寫類似Forth的DSL。 我采取的方法既簡單又令人困惑: 對於做簡單的事情,這非常有效: 簡單的函數可以簡單地轉換為相應的堆棧轉換。 到目前為止,一些游戲產生了令人愉快 當我嘗試使用高階函數擴展它時 ...

為什么id的類型不能專門用於(forall a.a - > a) - >(forall b.b - > b)?

[英]Why can't the type of id be specialised to (forall a. a -> a) -> (forall b. b -> b)?

在Haskell中采用簡單的身份功能, 鑒於Haskell據說支持不可預測的多態性,我應該能夠通過類型歸屬將id “限制”到類型(forall a. a -> a) -> (forall b. b -> b) a。a (forall a. a -> a) -&gt ...

為什么不進行類型檢查?

[英]Why doesn't this typecheck?

這是玩具示例.hs: 這就是 ghci 的想法: 為什么fine類型檢查在broken時沒有? 我如何被broken以進行類型檢查? (在我的真實代碼中,如果必須,我可以將類型參數a添加到Broken ,而不是在構造函數中對其進行普遍量化,但如果可能的話,我想避免這種情況。) 編輯:如果我將Br ...


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