私は Haskell を使い始めたばかりで、この単純な再帰アルゴリズムを打ち出して、リスト内のすべての数値の LCM を見つけました。これは機能しますが、面倒なので、これをよりエレガントで読みやすく、Haskell-y にする方法についてのピアレビューを期待していました。
lcms list
| length list > 1 = lcms (lcm (head list) (head (tail list)):(tail (tail list)))
| otherwise = list
つまり、リストを取得して最初の 2 つの項目の LCM を実行し、それを先頭に追加して、それらの 2 つの要素を除いたリストに追加します。基本的に、私が目指している疑似コードは次のようなものです。
lcms [a,b,c] = lcm (a, (lcm (b, c))
何か提案はありますか?私は Haskell を改善し、人々が実際に読めるものを書きたいと思っています。効率化のヒントも大歓迎です!
皆さんありがとう!