我在學習Haskell,並試圖理解類型系統。 我想寫一個函數,它返回一個輸入的系列'一半或三加一'的長度。這是我嘗試在功能,使用遞歸的方法(該功能僅對集成輸入): hotpo :: (Integral a) => a->a
hotpo n = hotpoHelper n 1
hotpoHelper:: (Integral a) => a->a->a
hotpoHelper 1 n = n
我無法真正瞭解它。我們爲什麼需要它?我的意思是如果我使用相同的類型參數,我認爲這意味着它們應該是相同的類型。 我聽說它可以幫助編譯器避免無限循環。有人能告訴我更多關於這方面的細節嗎?最後,在真實世界的Haskell中,我們應該遵循什麼樣的模式和實踐來使用函數依賴嗎? [後續問題] class Extract container element where
extract :: conta
我是新來的Haskell和我試圖實施一門功課的計算器。我停留在一個地方,我需要在兩個值進行分工,我認爲這個問題是,他們的類型不能被推斷或需要聲明/轉換。我正在努力學習如何自己解決這個問題,但沿途的任何見解都會有所幫助。 下面是代碼: data Value e = OK e | Error String deriving (Eq)
-- assuming we know how to type
斯卡拉有許多可用作類型類的特徵,例如包scala.math中的Ordered和Numeric。 我可以,例如,編寫使用Ordered這樣的通用方法: def f[T <% Ordered[T]](a: T, b: T) = if (a < b) a else b
我想要做類似的事情與Numeric,但這不起作用: def g[T <% Numeric[T]](a: T, b: T) = a *