是否存在分析OCaml程序并建议样式和代码方面的一些改进的工具?在perl的世界中,仍然存在Perl :: Critic以避免糟糕的风格.
我需要的是一些工具,它们不仅可以提示风格,还可以使事情更清晰,并避免在OCaml程序中不是尾递归的构造.
任何提示?
我需要一种方法来检测内存是否很低,以便我的ocaml程序可以对此作出反应.你能指点我如何实施或使用它吗?
任何提示?
再见安德烈亚斯
我正在使用这段代码并触发stackoverflow,如果我使用Extlib的Hashtbl,则不会发生错误.没有stackoverflow使用专门的Hashtbl的任何提示?
module ColorIdxHash = Hashtbl.Make(
struct
type t = Img_types.rgb_t
let equal = (==)
let hash = Hashtbl.hash
end
)
(* .. *)
let (ctable: int ColorIdxHash.t) = ColorIdxHash.create 256 in
for x = 0 to width -1 do
for y = 0 to height -1 do
let c = Img.get img x y in
let rgb = Color.rgb_of_color c in
if not (ColorIdxHash.mem ctable rgb) then ColorIdxHash.add ctable rgb (ColorIdxHash.length ctable)
done
done;
(* .. *)
Run Code Online (Sandbox Code Playgroud)
backtrace指向hashtbl.ml:
致命错误:异常Stack_overflow在文件"hashtbl.ml"处引发,第54行,字符16-40从文件"img/write_bmp.ml",第150行,字符52-108调用...
任何提示?
我有一个本地安装的库的问题.在我的项目中有xmlrpc ++ 0.7库:
myproject/
+-- xmlrpc++0.7/
+-- src/
Run Code Online (Sandbox Code Playgroud)
如果没有找到,我希望CMake使用本地xmlrpc ++ 0.7目录进行回退.两个问题,第一个,find_path()或find_library()不适用于本地目录.我使用了一种变通方法来测试find_xxx()处理的变量是否为空.如果为空,我手动设置它们.cmake现在生成Makefile而没有错误.但是如果我想通过make编译项目,那么c ++编译器会返回"错误:XmlRpc.h:找不到文件".文件XmlRpc.h位于myproject/xmlrpc ++ 0.7/src中,如果我手动编译它们,它可以正常工作.
这是我的CMakeLists.txt.如果有人能指出在上述条件下使用cmake的正确解决方案,我感到非常高兴.
--- CMakeLists.txt ---
project(webservice_tesseract)
cmake_minimum_required(VERSION 2.6)
set(CMAKE_INCLUDE_CURRENT_DIR ON)
# find tesseract
find_path(TESSERACT_INCLUDE_DIR tesseract/tesseractmain.h
/opt/local/include
/usr/local/include
/usr/include
)
find_library(TESSERACT_LIBRARY_DIR
NAMES tesseract_main
PATHS
/opt/local/lib/
/usr/local/lib/
/usr/lib
)
message(STATUS "looked for tesseract library.")
message(STATUS "Include file detected: [${TESSERACT_INCLUDE_DIR}].")
message(STATUS "Lib file detected: [${TESSERACT_LIBRARY_DIR}].")
add_library(tesseract STATIC IMPORTED)
set_property(TARGET tesseract PROPERTY IMPORTED_LOCATION
${TESSERACT_LIBRARY_DIR}/libtesseractmain.a
)
#find xmlrpc++
message(STATUS "cmake home dir: [${CMAKE_HOME_DIRECTORY}].")
set(LOCAL_XMLRPCPLUSPLUS ${CMAKE_HOME_DIRECTORY}/xmlrpc0.7++/)
message(STATUS "xmlrpc++ local dir: [${LOCAL_XMLRPCPLUSPLUS}].")
find_path(XMLRPCPLUSPLUS_INCLUDE_DIR XmlRpcServer.h …