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

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

GHCi中的多行命令

GHCi中的多行命令

慕沐林林 2019-12-21 11:31:47
我在ghci中輸入多行命令時(shí)遇到問(wèn)題。以下兩行代碼可從文件運(yùn)行:addTwo :: Int -> Int -> IntaddTwo x y = x + y但是當(dāng)我輸入ghci時(shí),出現(xiàn)錯(cuò)誤:<interactive>:1:1: error:    Variable not in scope: addTwo :: Int -> Int -> Int我也嘗試將代碼放入:{ ... :},但它們也不適用于本示例,因?yàn)檫@只是將行追加到一行中,事實(shí)并非如此。我正在使用WinGHCi,版本2011.2.0.1
查看完整描述

3 回答

?
慕娘9325324

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

大多數(shù)時(shí)候,您可以依靠類(lèi)型推斷來(lái)為您確定簽名。在您的示例中,以下足夠了:


Prelude> let addTwo x y = x + y

如果您確實(shí)想要帶有類(lèi)型簽名的定義,或者您的定義跨越多行,則可以在ghci中執(zhí)行以下操作:


Prelude> :{

Prelude| let addTwo :: Int -> Int -> Int

Prelude|     addTwo x y = x + y 

Prelude| :}

Prelude> addTwo 4 7

11

請(qǐng)注意,您也可以將其壓縮到一行:


Prelude> let addTwo :: Int -> Int -> Int ; addTwo x y = x + y

您可以在文檔提示部分的“ 交互評(píng)估”中找到有關(guān)與ghci交互的更多信息。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
慕的地6264312

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

通過(guò)啟動(dòng)GHCI并輸入:set +m以下命令來(lái)解決此問(wèn)題:


Prelude> :set +m

Prelude> let addTwo :: Int -> Int -> Int

Prelude|     addTwo x y = x + y

Prelude| 

Prelude> addTwo 1 3

4

繁榮。


這里發(fā)生的事情(我主要是在和您聊天,在通過(guò)“ 了解您的Haskell”工作時(shí),正在谷歌上尋求幫助的人)是GHCI是一個(gè)交互式環(huán)境,您可以在其中動(dòng)態(tài)更改函數(shù)名稱(chēng)的綁定。您必須將函數(shù)定義包裝在一個(gè)let塊中,以便Haskell知道您將要定義一些內(nèi)容。這些:set +m東西是多行:{ 代碼 :}構(gòu)造的簡(jiǎn)寫(xiě)。


空格在塊中也很重要,因此您必須在類(lèi)型定義之后縮進(jìn)四個(gè)空格,以說(shuō)明函數(shù)中的四個(gè)空格let。


查看完整回答
反對(duì) 回復(fù) 2019-12-21
?
胡子哥哥

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

從GHCI版本8.0.1開(kāi)始,let不再需要在REPL上定義功能。


因此,這應(yīng)該適合您:


λ: addTwo x y = x + y

λ: addTwo 1 2

3

λ: :t addTwo

addTwo :: Num a => a -> a -> a

Haskell的類(lèi)型推斷提供了適用于浮點(diǎn)數(shù)的通用類(lèi)型化:


λ: addTwo 2.0 1.0

3.0

如果您必須提供自己的鍵入內(nèi)容,則似乎需要let結(jié)合使用多行輸入(用于:set +m在GHCI中啟用多行輸入):


λ: let addTwo :: Int -> Int -> Int

 |     addTwo x y = x + y

 | 

λ: addTwo 1 2

3

但是,如果Int由于非多態(tài)輸入而嘗試傳遞除a以外的任何內(nèi)容,則會(huì)出現(xiàn)錯(cuò)誤:


λ: addTwo 2.0 1.0


<interactive>:34:8: error:

    ? No instance for (Fractional Int) arising from the literal ‘2.0’

    ? In the first argument of ‘a(chǎn)ddTwo’, namely ‘2.0’

      In the expression: addTwo 2.0 1.0

      In an equation for ‘it’: it = addTwo 2.0 1.0


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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