Есть бинарный файл, нужно выбирать из него 16-битные отсчёты с
определённого места (nBg - номер отсчёта в файле) и количеством-nSm.
Результат - список типа [Word16] (или [Int16]) размером nSm.
Вот последовательность действий над одним отсчётом (2-4):
1 main = do ff <- decodeFile "Data.dat" :: IO [Word16]
2 let x1 = putWord16le (ff !! 10)
3 x2 = runPut x1
4 x3 = decode x2 :: Word16
5 printf "0x%x\n" x3
Здесь получаю 1 отсчёт. Нужно написать ф-цию, которая формирует
список из этих отсчётов, описанный выше.
Примерная типизация:
getRecData :: IO a -> Integer -> Integer -> [a]
getRecData x nBg nSm
Здесь, x - значение возвращённое decodeFile (1 строка - ff, например)
nBg - номер позиции первого 16-битного отсчёта;
nSm - всего отсчётов;
[a] - результат, список отсчётов.
Использую a (IO a, [a]), т.к. может быть и Word8, Word16, Word32...
>>>