2017-02-24 62 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))