누군가 내가 하스켈에서 올바른 코드를 얻는 방법을 "얻지 못하고있다"고 말했습니다.하나의 함수로 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
와 : 내 모든 하스켈 코드를 느끼게하지만, 간단한 기능 (적어도 자바 또는 C와 같은 "표준"언어 내 OOP 코드 ++에 비해) 정말 못생긴대로 그 사람이 완전히 오른쪽해야합니다 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
에 대한 작업이 필요합니다) 내가 처음에 2 차원 매트릭스를 가지고있는 나는 작업의 순서를 적용합니다 원하는 결과.
이 기능은 작동하지만, 이제는이 모든 로직을 단일 기능으로 캡슐화하고자합니다 (matrix_transf
라고 부름). 현재 코드는 무엇 matrixExpValues
및 canonicalSt
반환에 묶여, 나는
matrix_transf mev cs =
...all those transformations
...until I get to final_result
비판의 모든 종류 (나는 내가 개선 할 필요!) 나는 좋은 하스켈 코더 것으로 예상 환영처럼 뭔가를하고 싶습니다 아마도 완전히 다른 방식으로이 문제에 접근하고 그것이 내가 알고 자하는 것입니다!