誰かが、Haskellで適切なコードをどうやって "取得"していない可能性があると言いました。私は(少なくとも、JavaやC++などの「標準」言語での私のOOPコードと比較して)すべての私のHaskellコードが、簡単な関数が本当に醜いと感じるように、その誰かが、完全に右である必要がありますと1つの関数でhaskellの関数リストをカプセル化する
mev = matrixExpValues 5 4 3
cs = canonicalSt 4 3
cs_t1 = map (foldl (++) "") (map (map show) cs)
cs_t2 = map (++ ":") cs_t1
mev_t1 = intXxsToStringXxs mev
mev_t2 = map (map (++ "\t")) mev_t1
mev_t3 = map (foldl (++) "") mev_t2
res1 = zipWith (++) (map (++ "\t") cs_t2) mev_t3
res2 = map (++ "\n") res1
final_result = foldl (++) "" res2
をmev
とのcs
:
*Main> mev
[[2,-2,-2,-6],[4,2,0,-2],[2,2,4,4],[6,4,2,2],[6,4,2,6]]
*Main> cs
[[0,0,4],[0,1,3],[0,2,2],[1,1,2]]
(これらの値を手入力されたされた、私は任意mev
とcs
のために働くためにこれを必要になります!) 私が最初に私が得たまで、私は一連の操作を適用するには、2D行列を持っています希望の結果。
これはうまくいきましたが、今はすべてのロジックを1つの関数にカプセル化したいと思います(matrix_transf
としましょう)。現在のコードは、私は良いHaskellのコーダーがする信じるものmatrixExpValues
とcanonicalSt
復帰に結びついている、と私は
matrix_transf mev cs =
...all those transformations
...until I get to final_result
のようなものに批判のすべての種類を持ってしたいと思います(私が改善することができますので、私はそれを必要とする!)大歓迎ですおそらくこれは全く異なる方法でこれに近づき、それが私が知りたいと思っているものです!