Новый пакет Хаскелл: в OpenCL


Я занимаюсь разработкой высоком уровне OpenCL для вязки в Haskell, и я хочу, экспертной оценки и тестирования. Он только сейчас получает платформу и информация устройство на платформе OpenCL.

У меня есть много функций, которые только изменить возвращаемый тип и размер тип, переданный в библиотеки C, но я не знаю как это исправить.

На GitHub

getDeviceInfoUlong :: CLDeviceInfo_ -> CLDeviceID -> IO (Either CLError CLulong)
getDeviceInfoUlong infoid device = alloca $ \(dat :: Ptr CLulong) -> do
  whenSuccess (raw_clGetDeviceInfo device infoid size (castPtr dat) nullPtr)
    $ peek dat
    where 
      size = fromIntegral $ sizeOf (0::CLulong)

getDeviceInfoSizet :: CLDeviceInfo_ -> CLDeviceID -> IO (Either CLError CSize)
getDeviceInfoSizet infoid device = alloca $ \(dat :: Ptr CSize) -> do
  whenSuccess (raw_clGetDeviceInfo device infoid size (castPtr dat) nullPtr)
    $ peek dat
    where 
      size = fromIntegral $ sizeOf (0::CSize)


694
5
задан 12 июля 2011 в 09:07 Источник Поделиться
Комментарии
1 ответ

Просматривая код, я вижу, частенько в "высокий уровень фантик" возвращает CLuints и такие. Я бы сказал, что считаю неправильным - почему бы не вернуть типа Хаскела?

Вместо того, чтобы вернуться, скажем, Клинт, сделать

f :: Integral i => ... -> i

так что пользователю не придется засорять свой код с этими типами и fromIntegrals повсюду.

Кроме того, не оставляйте комментарии код в репозитории. Вы всегда можете восстановить через Git, если вам нужно.

4
ответ дан 14 июля 2011 в 03:07 Источник Поделиться