2017-02-24 63 views
0

我想传递给haskell下面的代码,但它让我错误haskell中的不正确终止的字符常量。在Python代码已经测试并correcHaskell错误错误地终止字符常量

import System.IO 
    funcion x n = funcionaux x n 1 
    funcionaux x n k = if(k>n) then 2*k-1 else (2*k-1)-((x**k)´div´(funcion(x,n,(k+1))) 
    main = do 
    x <- readLn :: IO Double 
    n <- readLn :: IO Int 
    putStrLn (show(funcion x n)) 

的Python代码是

def funcion(x,n,k): 
     if k > n: 
      return ((2*k)-1) 
     else: 
      return ((2*k)-1) - ((x**k)/funcion(x, n, (k+1))) 

    print(funcion(1.3,7,1)) 
+0

'div'应该在反引号之间:'''div''' ... –

+1

计算括号,并且不要用','分隔函数参数。它是'funcion x n(k + 1)',而不是'funcion(x,n,k + 1)'。 – chepner

+0

这是python代码 – delta1020

回答

0

那么...... Haskell并不像Python那么简单,它需要深思熟虑的研究。

工作的代码如下所示:

import System.IO 

funcionaux x n k = if(k>n) 
       then 2*k-1 
       else (2*k-1)-((x^k) `div` (funcionaux x n (k+1))) 
main = do 
x <- readLn :: IO Int 
n <- readLn :: IO Int 
putStrLn (show (funcionaux x n 1)) 

还有一些注意事项:

  1. 中缀使用`operator`不是 '经营者';
  2. **和^不同类型;
  3. div和/也适用于不同类型;
  4. 函数调用期间参数传递时不带逗号;
  5. 等等。
3

你想反引号(这表明中缀使用前缀功能)左右div,而不是单引号(其指示字符常量,因此错误)。也就是说,您应该在使用'div'的地方使用`div`

+0

Alexis仍然没有给我的代码,我得到的错误prog.hs:4:1:错误: 第4行解析错误(可能是不正确的缩进或不匹配的括号) 我已经更正了div错误 – delta1020

1

您正在打开4个括号和关闭3

下面是重新格式化你的代码的建议。我也做了funcionaux递归,因为它应该是。

您可能有更多的错误需要解决,这是未经测试的。

import System.IO 
funcion x n = funcionaux x n 1 
funcionaux x n k = if k>n 
    then 2*k - 1 
    else 2*k - 1 - ((x**k) `div` funcionaux x n (k+1)) 
main = do 
    x <- readLn :: IO Double 
    n <- readLn :: IO Int 
    putStrLn (show (funcion x n))