我需要帮助来理解三个Haskell函数的用法
Control.Exception.try :: Exception e => IO a -> IO (Either e a))Control.Exception.catch :: Exception e => IO a -> (e -> IO a) -> IO a)Control.Exception.handle :: Exception e => (e -> IO a) -> IO a -> IO a)我需要知道几件事:
我会写下我的试验,希望你能帮助我:
尝试
我有一个例子:
x = 5 `div` 0
test = try (print x) :: IO (Either SomeException ())
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
如何设置自定义错误输出?
我该怎么做才能将所有错误都设置为SomeException,所以我不必编写 :: IO (Either SomeException())
捕获/试
你能给我看一个自定义错误输出的简短例子吗?
我有以下程序的问题.
// fkt.cpp
#include "fkt.h"
int add2(int a, int b)
{
return a+b;
}
Run Code Online (Sandbox Code Playgroud)
标题:
// fkt.h
int add2(int a, int b);
Run Code Online (Sandbox Code Playgroud)
现在我编译它:
g++ -c fkt.cpp
Run Code Online (Sandbox Code Playgroud)
现在我跑了nm,得到:
00000000 T _Z6add2ii
U __gxx_personality_v0
Run Code Online (Sandbox Code Playgroud)
当我想在任何地方使用该函数时:
(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?(我正在使用Ubuntu Linux.)
hsc2hs和c2hs有什么区别?
我知道hsc2hs是一个预处理器,但它到底是做什么的?
c2hs可以用C代码制作Haskell模块,但是我需要hsc2hs吗?
我有一个问题:如何抛出异常并退出程序?我写了一个简单的例子:
-- main.hs
import Test
main = do
Test.foo ""
putStrLn "make some other things"
Run Code Online (Sandbox Code Playgroud)
这是模块:
moldule Test where
foo :: String -> IO ()
foo x = do
if null x
then THROW EXCEPTION AND EXIT MAIN else putStrLn "okay"
Run Code Online (Sandbox Code Playgroud)
我想启动它并抛出异常并退出程序,但是如何?
嗨伙计可以有人解释我作为一个haskell noob运营商:
(.) :: (b -> c) -> (a -> b) -> a -> c
(<$>) :: Functor f => (a -> b) -> f a -> f b
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)
做?当我看到签名时,我什么都不知道,通过一个简单易懂的解释来帮助我.
嗨我需要在执行haskell命令后读取命令行 标准,我知道有两个模块来执行系统命令:System.Cmd和System.Process
任何人都可以给我一个简单的例子来运行这些System.Process函数吗?
这里是我需要做的一个例子(我知道有System.Directory这样做,但我认为这是一个很好的例子):
ls -a我怎样才能做到这一点?
任何人都可以在haskell中向我展示一个小的libClang示例吗?
我有文档,但不知道从哪里开始.
一个小例子会很好
我需要一个例子如何使用hsc2hs,我想当我写一个头文件,如:
// foo.h
#define PI 3.14159
typedef struct {
int i1;
int i2;
} foo;
struct foo2 {
int i1;
int i2;
};
int fooFkt(foo f);
Run Code Online (Sandbox Code Playgroud)
然后创建一个像以下一样的hsc文件:
import Foreign
import Foreign.C
#include "foo.h"
Run Code Online (Sandbox Code Playgroud)
用途hsc2hs:
{-# INCLUDE "foo.h" #-}
{-# LINE 1 "test.hsc" #-}
import Foreign
{-# LINE 2 "test.hsc" #-}
import Foreign.C
{-# LINE 5 "test.hsc" #-}
Run Code Online (Sandbox Code Playgroud)
我不明白,我认为帽子hsc2hs会像我一样为我导入所有需要的东西 PI
谁能给我一个更好的例子?
我希望能够访问XML文件的数据
<?xml version="1.0"?>
<MY>
<Foo id="1" name="test">
<Argument name="a" />
</Foo>
<Foo id="2" name="test2">
<Argument name="a" />
<Argument name="b" />
</Foo>
<Other id="2" name="someOther"/>
</MY>
Run Code Online (Sandbox Code Playgroud)
我想例如用它的参数读出每个Foo,我怎么能用Haskell做到这一点?(我想使用HaXml模块)
我不知道从哪里开始.
我在这里发现了类似的东西:在哪里可以找到C++语言的标准BNF或YACC语法?
但是下载链接不再起作用,我想问一下是否有人知道我现在可以在哪里下载它?