第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Haskell的TypeClasses和Go的接口

Haskell的TypeClasses和Go的接口

Go
智慧大石 2021-04-04 16:19:03
Haskell的TypeClass和Go的接口之間有何異同??jī)煞N方法的相對(duì)優(yōu)缺點(diǎn)是什么?
查看完整描述

3 回答

?
大話(huà)西游666

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊

Go接口看起來(lái)就像只是表面上的樣子,就像Haskell中的單參數(shù)類(lèi)型類(lèi)(構(gòu)造函數(shù)類(lèi))一樣。


方法與接口類(lèi)型相關(guān)聯(lián)

對(duì)象(特定類(lèi)型)可能具有該接口的實(shí)現(xiàn)

我不清楚Go是否以任何方式支持通過(guò)接口的有界多態(tài)性,這是類(lèi)型類(lèi)的主要目的。也就是說(shuō),在Haskell中,接口方法可以用于不同的類(lèi)型,


class I a where

    put :: a -> IO ()

    get :: IO a


instance I Int where

    ...


instance I Double where

    ....

所以我的問(wèn)題是Go是否支持類(lèi)型多態(tài)性。如果不是,它們根本就不像類(lèi)型類(lèi)。它們并不是真正可比的。


Haskell的類(lèi)型類(lèi)允許通過(guò)“泛型”(更高種類(lèi)的多態(tài)性)對(duì)代碼進(jìn)行強(qiáng)大的重用-本文為此類(lèi)形式的泛型程序的跨語(yǔ)言支持提供了很好的參考。


通過(guò)類(lèi)型類(lèi)的即席或有界多態(tài)性在此處得到了很好的描述。這是Haskell中類(lèi)型類(lèi)的主要目的,并且沒(méi)有通過(guò)Go接口來(lái)解決,這意味著它們根本不是非常相似。嚴(yán)格來(lái)說(shuō),接口的功能不那么強(qiáng)大-一種零階類(lèi)型類(lèi)。


查看完整回答
反對(duì) 回復(fù) 2021-04-26
?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊

我將在唐·斯圖爾特(Don Stewart)的出色回答中補(bǔ)充說(shuō),Haskell類(lèi)型類(lèi)的令人驚訝的結(jié)果之一是,您可以在編譯時(shí)使用邏輯編程來(lái)生成一個(gè)類(lèi)的任意多個(gè)實(shí)例。(Haskell的類(lèi)型類(lèi)系統(tǒng)實(shí)際上是Prolog的免刪減子集,與Datalog非常相似。)該系統(tǒng)在QuickCheck庫(kù)中得到了極大的利用?;蛘吲e一個(gè)非常簡(jiǎn)單的例子,您可以看到如何定義一個(gè)布爾補(bǔ)數(shù)(not)版本,該版本可用于任意arity謂詞。我懷疑這種能力是類(lèi)型類(lèi)系統(tǒng)的意外結(jié)果,但是事實(shí)證明它非常強(qiáng)大。



查看完整回答
反對(duì) 回復(fù) 2021-04-26
?
楊魅力

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超6個(gè)贊

  1. 在haskell類(lèi)型中,類(lèi)的實(shí)例化是顯式的(即,您必須說(shuō)說(shuō)instance Foo BarBar是Foo的實(shí)例),而在實(shí)現(xiàn)中,接口是隱式的(即,當(dāng)您定義一個(gè)定義了正確方法的類(lèi)時(shí),它會(huì)自動(dòng)實(shí)現(xiàn)相應(yīng)的接口而無(wú)需不得不說(shuō)implement InterfaceName)。

  2. 接口只能描述接口實(shí)例為接收者的方法。在類(lèi)型類(lèi)中,實(shí)例化類(lèi)型可以出現(xiàn)在函數(shù)的任何參數(shù)位置或返回類(lèi)型處(即,可以說(shuō),如果Foo是Bar類(lèi)型的實(shí)例,則必須有一個(gè)名為baz的函數(shù),該函數(shù)需要一個(gè)Int并返回一個(gè)Foo-您不能在接口上這么說(shuō))。


查看完整回答
反對(duì) 回復(fù) 2021-04-26
  • 3 回答
  • 0 關(guān)注
  • 338 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)