我正在尝试导入 monad 状态。我执行了以下命令:
:m Control.Monad.State
Run Code Online (Sandbox Code Playgroud)
但是找不到模块。我正在使用GHCi, version 7.0.4:.
你能给我一些提示来解决这个问题吗?
谢谢你。
试图在这个页面上解决练习7 我想要定义数据类型来写一些值,如:
(List [Elem 1, List [Elem 2, List [Elem 3, Elem 4], Elem 5]])
Run Code Online (Sandbox Code Playgroud)
嵌套列表,任何长度,任何深度.
我试过这段代码:
data List a = Elem a | List [List a]
Run Code Online (Sandbox Code Playgroud)
但它没有编译:
Parse error: naked expression at top level
Run Code Online (Sandbox Code Playgroud)
怎么做到呢?
haskell有可能匹配复杂的模式吗?
我的意思是,我有一个逗号分隔符值(CSV)文件:
name,ID,fieldA,fieldB
Run Code Online (Sandbox Code Playgroud)
是否可以编写如下函数:
getName (n:',':xs) = n
Run Code Online (Sandbox Code Playgroud)
哪里n不是单个元素而是列表?
从这段代码开始:
class Base{
public:
virtual void foo(){....}
};
class Derived{
public:
void foo(){....}
};
Run Code Online (Sandbox Code Playgroud)
如果d是一个Derived对象,我可以以某种方式调用该对象的Base类中定义的foo方法吗?
编辑:我的意思是从外面,这样d.foo()绑定到Base :: foo()
有没有办法用"双"init-expression写入循环?
vector<int> v;
//...vector filling...
for (vector<int>::iterator i = v.begin() AND vector<int>::iterator e = v.end(); i != e; ++i){ ...}
Run Code Online (Sandbox Code Playgroud) 在Scheme R6RS中是否可以打印变量的名称?我的意思是:
(define (f)
(lambda (arg)
(display ( *name* arg))))
Run Code Online (Sandbox Code Playgroud)
这样:
(define my-var 3)
(f my-var) ; => displays the string "my-var")
Run Code Online (Sandbox Code Playgroud) 我在m文件中定义了这个函数:
function[it,xvect,xdif,fx]=bisez(a,b,nmax,toll,fun)
it=-1;
xvect=[];
xdif=[];
fx=[];
err=toll+1;
while(it<nmax && err>toll)
x=(b+a)/2;
if(fun(x)==0)
err=0;
else
err=abs(b-a)/2;
end
it=it+1;
xvect=[xvect;x];
xdif=[xdif;err];
fx=[fx:fun(x)];
if(fun(x)*fun(a)>0)
a=x;
else
b=x;
end;
end;
if(it<nmax)
fprintf('Convergence computed at step k:%d\n',it);
else
fprinf('Iteration limit reached: %d\n',it);
end
fprintf('Computed root: %-12.8f\n',xvect(it+1));
return
Run Code Online (Sandbox Code Playgroud)
然后,如果我尝试使用这些命令调用它:
fun=@(x)exp(x);
a=1;
b=1.5;
nmax=1000;
toll=2;
bisez(a,b,nmax,toll,fun)
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
??? Undefined function or method 'bisez' for input arguments of type 'function_handle'.
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
PS:我正在使用 Matlab 2007b
我定义了这些数据类型:
data Term = Symbol [Char] | Number [Int]
data Exp = Fun (String, Term) | Exp (String, [Exp])
Run Code Online (Sandbox Code Playgroud)
然后我写了一些Show规则:
instance Show Term where
show (Symbol [x]) = [x]
show (Symbol (x:xs)) = [x]++", "++(show (Symbol xs))
show (Number [x]) = (show x)
show (Number (x:xs)) = (show x)++", "++(show (Number xs))
instance Show Exp where
show (Fun (name, args)) = name++"("++(show args)++")"
show (Exp (name, args)) = name++"("++(show args)++")"
Run Code Online (Sandbox Code Playgroud)
现在,如果我让:
bt = Exp("z", [Fun("f", Number [1,2,3]), Fun("g", Symbol ['a', …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
data SafeValue a = SafeValue a a a deriving Eq
class Safe a where
check::a->Bool
(+++)::a->a->a
instance (Num a, Eq a) => Safe (SafeValue a) where
check (SafeValue x y z) | x == y = True
| x == z = True
| y == z = True
| otherwise = False
(SafeValue a b c)+++(SafeValue x y z) = let new_val = SafeValue (a+x) (b+y) (c+z)
in if check new_val then new_val
else error "Error"
Run Code Online (Sandbox Code Playgroud)
我想添加class …
我有这段代码:
for (f <- file_list){
val file_name = path + "\\" + f + ".txt"
val line_list = Source.fromFile(file_name).getLines()
println (file_name + ": " + line_list.length)
println (file_name + ": " + line_list.length)
total_number_lines += line_list.size
}
Run Code Online (Sandbox Code Playgroud)
我有一个文件列表,对于每个文件我打开它,加载它作为它的行列表然后我计算列表中的行数.
前者调用line_list.length给出正确的行号值,但后者总是返回零.实际上,length执行该函数后,line_list列表似乎是空的.
我真的不明白为什么会这样.
我错过了什么?