免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5224 | 回复: 11
打印 上一主题 下一主题

ghc hugs indent 区别 (已解决 见 2 楼) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-09-10 09:46 |只看该作者 |倒序浏览
ghc 和 hugs 的 indent 是有区别的吗?

具体应该是什么样的呢?

我按 yaht 写的一个 Guess.hs
执行结果如下:


lfs_625:wizard | Wed 10 Sep 2008 09:56:39 AM GMT | ~/programe/haskell
$runhugs Guess.hs
I'm thinking of a number between 1 and 100
Enter your guess:

lfs_625:wizard | Wed 10 Sep 2008 09:56:51 AM GMT | ~/programe/haskell
$runhaskell Guess.hs

Guess.hs:17:2: parse error (possibly incorrect indentation)

文件如下:
Guess.tar (10 KB, 下载次数: 31)

谢谢各位了先。


------------------------
建议新手(比如我)用一些即时自动语法分析的东西(比如 emacs 的 flymake),会少犯很多错误。
另外,关于这一问题的详细解释,见下面的链接。
http://www.nabble.com/Code-layout-in-Emacs'-haskell-mode-td10604630.html

官方的一个解释:
http://hackage.haskell.org/trac/ ... iki/DoAndIfThenElse
难道新的 6.8.3 中已经解决了?我现在用的是 6.8.2

[ 本帖最后由 drunkedcat 于 2008-9-10 13:17 编辑 ]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2008-09-10 11:30 |只看该作者
应该是因为 then 需要缩进。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
3 [报告]
发表于 2008-09-10 11:32 |只看该作者

回复 #1 drunkedcat 的帖子

如果代码不长的话就直接贴上来,打包下载这种方式有时候还真的不太方便。

论坛徽章:
0
4 [报告]
发表于 2008-09-10 11:34 |只看该作者
“该不会是 tab 空格混用吧”,这个没有,都是用空格

“也许是 else 和 then 都要缩进”,我试了下,这个是正解。谢谢楼上。
在 emacs 中 else 和 then 的默认缩进是和 if 一样的,而且不能通过 tab cycle,这个真是不容易发现呀。

BTW,为什么不能引用你的帖子呢,给我个提示
“未定义操作,请返回。”
我的帖子就能引用。奇怪。

论坛徽章:
0
5 [报告]
发表于 2008-09-10 11:36 |只看该作者
原帖由 MMMIX 于 2008-9-10 11:32 发表
如果代码不长的话就直接贴上来,打包下载这种方式有时候还真的不太方便。



谢谢提醒。
关键是我怕有相关的转换发生,对于 haskell 这种依赖于 indent 的语言,空格和 tab 都不能随便用,我怕问题说不明白。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
6 [报告]
发表于 2008-09-10 11:37 |只看该作者

回复 #5 drunkedcat 的帖子

贴代码的时候用 [code][/code] 括起来应该会好很多。

论坛徽章:
0
7 [报告]
发表于 2008-09-10 13:59 |只看该作者
原帖由 drunkedcat 于 2008-9-9 19:34 发表
“该不会是 tab 空格混用吧”,这个没有,都是用空格

“也许是 else 和 then 都要缩进”,我试了下,这个是正解。谢谢楼上。
在 emacs 中 else 和 then 的默认缩进是和 if 一样的,而且不能通过 tab cycle, ...


emacs有个haskell-mode,用着还算方便。

论坛徽章:
0
8 [报告]
发表于 2008-09-29 08:48 |只看该作者
发现这个问题是在 do 后用 let 后后再用 if 时才有的问题
单纯的用 if 不会有这个问题。

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
9 [报告]
发表于 2008-09-29 12:48 |只看该作者
原帖由 drunkedcat 于 2008-9-29 08:48 发表
发现这个问题是在 do 后用 let 后后再用 if 时才有的问题
单纯的用 if 不会有这个问题。

不会有问题么?但你知道编译器会如何解释你的程序么?

Haskell Wikibook 对这个问题有解释,你可以看看:http://en.wikibooks.org/wiki/Haskell/Indentation (在 if within do 一小节中)

[ 本帖最后由 MMMIX 于 2008-9-29 12:56 编辑 ]

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
10 [报告]
发表于 2008-09-29 13:22 |只看该作者

回复 #9 MMMIX 的帖子

另外,ghc 的 -ddump-parsed 选项也很有用处。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP