使用Haskell构建一个可以使用两个以上参数的计算器

时间:2017-11-10 23:37:25

标签: haskell calculator

我正在尝试在Haskell中制作一个计算器。我已经完成了它可以采取两个参数。但我陷入了可能需要两个以上争论的地步。例如输入类型为(+ 1 2)并打印3.但现在它应该能够接收(+ 1 2 3)并打印出6。

代码在这里:

N=6
x<-c(1:N)
#########################################
A<-combn(x,2)
B<-matrix(0,ncol(A),length(x)) 
for( i in 1:ncol(A) ) 
{ 
y<-rep(0,N) 
y[A[1:nrow(A),i]]<-1 
B[i,]<-y 
}
######################################
E<-matrix(0,nrow(B),length(x)-nrow(A))  
for( i in 1:nrow(B) ) 
{ 
q=0 
for( j in 1:ncol(B) ) 
{ 
if( B[i,j]!=1 )  
{ 
q=q+1 
E[i,q]<-j 
}}}
########################################
ASD<-combn(E[i,],2) 
F<-matrix(0,nrow(B)*ncol(ASD),length(x)) 
q=0 
for( i in 1:nrow(B) ) 
{ 
ASD<-combn(E[i,],2) 
for( j in 1:ncol(ASD) ) 
{ 
B[i,ASD[1:nrow(ASD),j]]<-2 
q=q+1 
F[q,]<-B[i,] 
B[i,ASD[1:nrow(ASD),j]]<-0 
}}

1 个答案:

答案 0 :(得分:0)

更改应用操作可能有所帮助。这是两个例子:

apply_op “+” xs = sum xs
apply_op “-“ [x] = -x
apply_op “-“ (x:xs@(_:_)) = x - sum xs