我正在尝试在haskell中实现点点的vulkan教程。
现在我暂时无法尝试从c:转换此代码:
for (const char* layerName : validationLayers) {
bool layerFound = false;
for (const auto& layerProperties : availableLayers) {
if (strcmp(layerName, layerProperties.layerName) == 0) {
layerFound = true;
break;
}
}
if (!layerFound) {
return false;
}
}
return true;
到目前为止,我到此为止:
-- This has type (Int -> Text) -> Bool
let partOne = all (`elem` requiredValidationLayers) . flip map [0 .. realCount-1]
-- This has type Int -> IO Text
let partTwo i = do
let layerProperty = advancePtr layerProperties i
myField_ <- readStringField @"layerName" layerProperty
pure $ toS myField_ :: IO Text
我感觉我在这里已经掌握了所有要素,但是我可能会朝着完全错误的方向前进。
我如何将这些东西放在一起?
谢谢
PS:好的,我只是注意到集合包含检查很可能被颠倒了-没关系,为了这个问题,让我们假装它确实很好]]
我正在尝试在haskell中实现vulkan教程的零碎片段。目前,我一直试图从c:转换此代码:for(const char * layerName:validationLayers){bool layerFound = ...
我将从一些假设开始: