免费注册 查看新帖 |

Chinaunix

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

[haskell]加载两个文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-07-18 16:55 |只看该作者 |倒序浏览
本帖最后由 retuor 于 2010-07-18 16:57 编辑

Stdm 是个模块,实现了一些命题逻辑的运算符,比如 /\ 表示 and, ==> 表示蕴涵.....

现在想在我的代码里使用这个模块,应该如何做呢。我现阶段是在 ghci 交互环境中学习 haskell 的,一般把代码写在一个文件中,比如 3.hs,然后 :load 进来。 书上建议通过 :load Stdm 来使用这个模块,但我自己的代码在 3.hs 中,如果我再  :load 3 的话,Stdm 就消失了。

我看了点 ghci 的 help,好像 :add 可以添加文件,但试用了还是不行。
Prelude> :l Stdm
[1 of 1] Compiling Stdm             ( Stdm.lhs, interpreted )
Ok, modules loaded: Stdm.
*Stdm> True /\ False
False
*Stdm> :l "6.4/3"
[1 of 1] Compiling Main             ( 6.4/3.hs, interpreted )
Ok, modules loaded: Main.
*Main> True /\ False

<interactive>:1:5: Not in scope: `/\'
Prelude> :load Stdm
[1 of 1] Compiling Stdm             ( Stdm.lhs, interpreted )
Ok, modules loaded: Stdm.
*Stdm> True /\ False
False
*Stdm> :add "6.4/3"
[1 of 2] Compiling Main             ( 6.4/3.hs, interpreted )
Ok, modules loaded: Stdm, Main.
*Main> True /\ False

<interactive>:1:5: Not in scope: `/\'
3.hs 目前是空的,而 Stdm 在附件中。谢谢。


Stdm.lhs.gz (13.36 KB, 下载次数: 65)

论坛徽章:
0
2 [报告]
发表于 2010-07-18 18:54 |只看该作者
本帖最后由 SNYH 于 2010-07-18 19:07 编辑

:m +XXOO    (如果模块已经注册)

如果是文件形式
:add Stdm.hs
:add 3.hs

:load Stdm.hs
:add 3.hs

我自己测试的都是可行的

  另外 你的附件是一个patch 不是Stdm模块


你试试 Stdm./\

论坛徽章:
0
3 [报告]
发表于 2010-07-18 19:13 |只看该作者
m + 试过不行啊。模块文件是 Stdm.lhs,应该放什么地方好。我把它放当前目录的,m + 的时候得到错误信息

Prelude> :m +Stdm
module `Stdm' is not loaded
Prelude> :m + Stdm
module `Stdm' is not loaded
Prelude> :m + "Stdm"
syntax:  :module [+/-]
  • M1 ...
  • Mn
    Prelude>                  
    Leaving GHCi.


  • 用  load 还能加载。

    另外这个模块有点特殊,是所谓 "literate" 风格的。

    The program is a "literate script".  Each line that begins with "> "
    is Haskell source code that can be executed; all other lines are
    documentation which will be ignored by the compiler.

    论坛徽章:
    0
    4 [报告]
    发表于 2010-07-18 19:15 |只看该作者
    我试下,什么是 patch,它里头有  module Stdm where 的。

    论坛徽章:
    0
    5 [报告]
    发表于 2010-07-18 19:16 |只看该作者
    Stdm./\  这个可以了。

    是否有办法去掉 Stdm 呢?这样写有点麻烦。

    论坛徽章:
    0
    6 [报告]
    发表于 2010-07-19 09:47 |只看该作者
    不好意思。。 我下载一看很多 > > 和英文  就以为是一个patch文件 以为你弄错了 以前没见过 lhs 这种 l 代表latex?

    想去掉Stdm.  要么在Stdm.lhs 的module Stdm((/\)) where修改这句  导出/\
    或者在你的3.hs  里面  import Stdm ((/\))

    测试的 Stdm.lhs不动

    1. [snyh@snyh shm]$ cat 3.hs
    2. import Stdm ((/\))

    3. ttt = False /\ True
    4. [snyh@snyh shm]$ ghci 3.hs
    5. GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
    6. Loading package ghc-prim ... linking ... done.
    7. Loading package integer-gmp ... linking ... done.
    8. Loading package base ... linking ... done.
    9. Loading package ffi-1.0 ... linking ... done.
    10. [1 of 2] Compiling Stdm             ( Stdm.lhs, interpreted )
    11. [2 of 2] Compiling Main             ( 3.hs, interpreted )
    12. Ok, modules loaded: Stdm, Main.
    13. *Main> ttt
    14. False
    15. *Main>
    复制代码

    论坛徽章:
    0
    7 [报告]
    发表于 2010-07-19 18:21 |只看该作者
    果然行了,谢谢。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

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

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP