我正在使用IBM cplex优化器来解决优化问题,我不希望优化器执行所有终端打印.是否有成员在IloCplex或IloModel类中关闭此功能?这些是关于剪切和迭代的打印.打印到终端是昂贵的,我的问题最终将是数百万变量的数量级,我不想浪费时间与这些多余的输出.谢谢.
我正在尝试使用JuicyPixels库加载PNG,我能够成功完成此操作但我无法弄清楚底层图像的类型.在库中,DynamicImage定义如下.
data DynamicImage =
ImageY8 (Image Pixel8)
| ImageYA8 (Image PixelYA8)
| ImageRGB8 (Image PixelRGB8)
| ImageRGBA8 (Image PixelRGBA8)
| ImageYCbCr8 (Image PixelYCbCr8)
Run Code Online (Sandbox Code Playgroud)
通过简单的试验和错误,我能够通过这样做发现它是ImageRGBA8.
img = (\(ImageRBA8 t) -> t) dynImage
Run Code Online (Sandbox Code Playgroud)
然后就是这么做
imageData img
Run Code Online (Sandbox Code Playgroud)
在ghci中打印图像数据,所有其他类型都会出错.那么如何DynamicImage在没有试验错误的情况下找出已加载的类型.我确信这很简单,我只是遗漏了一些东西.
因为我一直在学习haskell,所以我很享受纯粹的部分,但现在我在monadic和IO部分遇到困难,可能会遇到一些人真正对这种语言感到愤怒的事情.我解决了一个项目euler问题,我简单地想要一个可变数组,因为我必须经常通过索引更新元素.我试过矢量但无法让它们工作,所以我尝试了Data.Array.IO.我可以读取和写入元素,但我不能按照我想要的方式在终端中显示数组.到目前为止,我有这个.
test = do
arr <- newArray (1,10) 37 :: IO (IOArray Int Int)
a <- readArray arr 1
writeArray arr 1 64
b <- readArray arr 1
dispArray arr
return ()
dispArray arr = do
(a,b) <- getBounds arr
printf "["
dispArray' arr a
printf "]\n"
where dispArray' arr i = do
(a,b) <- getBounds arr
if i < a || i > b
then return ()
else do
v <- readArray arr i
print v
dispArray' arr (i+1) …Run Code Online (Sandbox Code Playgroud) [(a,b) | a <- [1..5], b <- [1..5], a+b <- [1..10] ]
Run Code Online (Sandbox Code Playgroud)
尝试定义遵循这些规则的列表.我知道它不允许我添加a和b的方式,但我不明白为什么.
编辑忘了"< - "