亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 4803 | 回復(fù): 6
打印 上一主題 下一主題

haskell - 崩潰的縮進 [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2009-01-19 13:08 |只看該作者 |倒序瀏覽
在real world haskell 里面看到一個例子. 就比葫蘆畫瓢的寫了一遍.
結(jié)果從編譯失敗. 每個字母都檢查了一下, 一模一樣. 最后復(fù)制 例子 , 編譯通過.
最后發(fā)現(xiàn)是縮進的問題.  代碼如下:
正確的代碼如下:
import System.IO
import Data.Char(toUpper)

main :: IO ()
main = do
       inh <- openFile "input.txt" ReadMode
       outh <- openFile "output.txt" WriteMode
       mainloop inh outh
       hClose inh
       hClose outh
   
mainloop :: Handle -> Handle -> IO ()
mainloop inh outh =
    do ineof <- hIsEOF inh
       if ineof
           then return ()
           else do inpStr <- hGetLine inh
                        hPutStrLn outh (map toUpper inpStr)
                        mainloop inh outh

不正確的代碼如下:

import System.IO
import Data.Char(toUpper)

main :: IO ()
main = do
       inh <- openFile "input.txt" ReadMode
       outh <- openFile "output.txt" WriteMode
       mainloop inh outh
       hClose inh
       hClose outh
   
mainloop :: Handle -> Handle -> IO ()
mainloop inh outh =
    do ineof <- hIsEOF inh
       if ineof
           then return ()
           else do inpStr <- hGetLine inh
                   hPutStrLn outh (map toUpper inpStr)
                   mainloop inh outh
編譯的時候提示:

[1 of 1] Compiling Main             ( interactwith.hs, interactwith.o )

interactwith.hs:17:19:
    The last statement in a 'do' construct must be an expression

誰能解釋一下, haskell 的縮進是怎么回事? 應(yīng)該怎么處理. 本來一個小程序, 結(jié)果折騰了一個上午. 非常感謝.

論壇徽章:
95
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
2 [報告]
發(fā)表于 2009-01-19 14:00 |只看該作者

回復(fù) #1 luckyelement 的帖子

Haskell 通過縮進(稱為 layout) 確定代碼的結(jié)構(gòu),layout 的作用和 C 的 {} 以及 ; 類似。在網(wǎng)上搜索點介紹資料看看。

btw,如果以前沒有接觸過 Haskell,不宜一開始就看 RWH,可以先看點入門資料,例如 Yet Another Haskell Tutorial 就不錯。

論壇徽章:
1
2015年辭舊歲徽章
日期:2015-03-03 16:54:15
3 [報告]
發(fā)表于 2009-01-20 17:44 |只看該作者
Haskell 的 layout 在 YAHT 里面講的也挺少的。
不過 Haskell 也支持 {} 和分號,因此可以和縮進混合使用。

論壇徽章:
95
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
4 [報告]
發(fā)表于 2009-01-20 18:01 |只看該作者
原帖由 flw 于 2009-1-20 17:44 發(fā)表
Haskell 的 layout 在 YAHT 里面講的也挺少的。

入門足夠了。
不過 Haskell 也支持 {} 和分號,因此可以和縮進混合使用。

{}, ; 只應(yīng)該用在比較特殊的地方,例如很短的幾個語句啥的。

論壇徽章:
0
5 [報告]
發(fā)表于 2009-01-22 11:57 |只看該作者
謝謝, 還是之前看書的時候不仔細造成的, 又看了一下規(guī)范,雖然只有幾句話, 已經(jīng)夠用. 現(xiàn)在搞定了.
這種縮進方式, 可以讓程序看起來, 更清晰 和 更嚴禁.

論壇徽章:
95
程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設(shè)計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設(shè)計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
6 [報告]
發(fā)表于 2009-01-22 12:56 |只看該作者
原帖由 luckyelement 于 2009-1-22 11:57 發(fā)表
謝謝, 還是之前看書的時候不仔細造成的, 又看了一下規(guī)范,雖然只有幾句話, 已經(jīng)夠用. 現(xiàn)在搞定了.
這種縮進方式, 可以讓程序看起來, 更清晰 和 更嚴禁.

你這帖子回的就不嚴謹。。。

[ 本帖最后由 MMMIX 于 2009-1-22 12:59 編輯 ]

論壇徽章:
0
7 [報告]
發(fā)表于 2009-01-23 22:37 |只看該作者
你把do都拿出來單獨一行,就會發(fā)現(xiàn)縮進很簡單。
do是個語法糖,不單獨寫一行很多時候會導(dǎo)致縮進錯誤,并且會使代碼參差不齊。
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP