レンズライブラリ(Control.Lens)を使用した代替ソリューション3.7.1.2
import Control.Lens
f :: [[String]] -> [[Int]]
f = over (traverse.traverse) read
今、代わりに私たちが持っていた場合:
Prelude> let a = [("1676","17348"),("1677","18831"),("1677","18896")]
f :: [[String]] -> [(Int, Int)]
f = over (traverse.both) read
または、3つのタプルの場合、両方の定義から拡張して、新しい関数を3回必要とします。
Prelude> let a = [("1676","17348","10"),("1677","18831","10"),("1677","18896","10")]
import Control.Lens
import Control.Applicative
thrice f ~(a, a', a'') = (,,) <$> f a, <*> f a' <*> f a''
f :: [[String]] -> [(Int, Int, Int)]
f = over (traverse.thrice) read