複数の要素を一度に取得する
リストの中からインデックスで要素を取得するには(!!)オペレーターを使います。
複数のインデックスで要素を取得するにはmapと(!!)を使って、このように書けます(Ο(MN))。
code: (haskell)
map ('a'..'z' !!) 6, 14, 14, 3
"good"
Vectorから
http://hackage.haskell.org/package/vector-0.12.0.3/docs/Data-Vector-Generic.html#v:backpermute
code:haskell
backpermute :: (Vector v a, Vector v Int)
=> v a -- ^ @xs@ value vector
-> v Int -- ^ @is@ index vector (of length @n@)
-> v a
backpermute <a,b,c,d> <0,3,2,3,1,0> = <a,d,c,d,b,a>
ビット単位
bits-extra: Data.Bits.Pextより。最近のCPUならサポートされているので高速 #ビット演算 #コーナーで差をつけろ
code:haskell
pext :: Word64 -> Word64 -> Word64
Prelude Data.Bits.Pext Data.Word Numeric> showHex (pext 0x12345678 0xff00ff00 :: Word32) ""
"1256"
#recipe-collection