2017-02-21 9 views
-2

2つの値をパラメータとして入力して再帰的にリストを作成しようとしています。haskellで2つの値のリスト値を再帰的に返します

私は、以下を実行していることを知っている:

function1 a b = [a..b] 

正しく機能しますが、再帰的ではありません。

function 0 = [] 
function a = function4 (a-1) ++ [a] 

しかし、私は実際にそれが二つのパラメータを再帰的に作成されていることを行う方法見当がつかない: それは次のように単一のパラメータを入力することにより、再帰的に動作することを確認します。

答えて

4

あなたは代わりに、パターンマッチングのかどうかa == bチェック:aはそもそもbよりも大きければ、これは問題を引き起こす可能性があること

function a b = if a == b then [b] 
         else a : function (succ a) b 

注意を。それもよくチェックしてください。私たちがそれをしている間、機能をより良いものにしてください:

range :: (Ord a, Enum a) => a -> a -> [a] 
range a b 
    | a > b  = [] 
    | a == b = [b] 
    | otherwise = a : range (succ a) b 
+0

私は正しく機能しました。ありがとうございました! –

関連する問題