Io OCaml格式和结构框:为什么我的输出与示例不匹配?
OCaml网站上的页面上有一个示例,给出了结构盒和包装盒之间的差异示例。我试图复制这个例子。(我使用的是OCaml 3.12.1。) 通过以下输入:Io OCaml格式和结构框:为什么我的输出与示例不匹配?,io,ocaml,Io,Ocaml,OCaml网站上的页面上有一个示例,给出了结构盒和包装盒之间的差异示例。我试图复制这个例子。(我使用的是OCaml 3.12.1。) 通过以下输入: Format.printf "@[<hov 2>(---@\n@[<hov 2>(---@\n@[<hov 2>(---@,)@]@,)@]@,)@]@\n" 我搞不懂的是如何获得页面归因于“结构框”的输出: 我不确定哪个格式。printf标识符映射到这些框,所以我尝试了几种变体: Format.printf
Format.printf "@[<hov 2>(---@\n@[<hov 2>(---@\n@[<hov 2>(---@,)@]@,)@]@,)@]@\n"
我搞不懂的是如何获得页面归因于“结构框”的输出:
我不确定哪个格式。printf
标识符映射到这些框,所以我尝试了几种变体:
Format.printf "@[<hv 2>(---@\n@[<hv 2>(---@\n@[<hv 2>(---@,)@]@,)@]@,)@]@\n"
Format.printf "@[<2>(---@\n@[<2>(---@\n@[<2>(---@,)@]@,)@]@,)@]@\n"
Format.printf "@[<b 2>(---@\n@[<b 2>(---@\n@[<b 2>(---@,)@]@,)@]@,)@]@\n"
Format.printf“@[(--@\n@[(--@\n@[(--@、)@、)@、)@、)@]@\n”
Format.printf“@[(--@\n@[(--@\n@[(--@、)@、)@、)@、)@]@\n”
Format.printf“@[(--@\n@[(--@\n@[(--@、)@、)@、)@、)@]@\n”
但是以上所有的输出都与
初始示例相同。有人知道如何从网页上获得与第二个示例类似的输出吗?我认为您的第二个示例(带高压盒)应该可以工作。但似乎@\n没有我们期望的行为
解决方案1:强制右括号前换行,即用@替换@\n
let () =
Format.printf "@.";
Format.printf "@[<hov 2>(---@\n@[<hov 2>(---@\n@[<hov 2>(---@\n)@]@\n)@]@\n)@]@\n";
Format.printf "@."
问题:始终会有换行,它永远不会打印:
(---(---))
即使它有足够的空间。如果这是您的问题,请参阅解决方案2
解决方案2:使用更长的线路:)如果中断是由长线路引起的,则高压箱会在右括号之前中断线路
let () =
Format.printf "@.";
Format.printf "@[<hv 2>(------------------------------------------------------------------------@,@[<hv 2>(---@,@[<hv 2>(---@,)@]@,)@]@,)@]";
Format.printf "@."
但是,右括号与右括号不对齐
解决方案3:如果希望右括号与左括号对齐,则需要
两个盒子
let () =
Format.printf "@.";
Format.printf
"@[<hv>@[<hv 2>(------------------------------------------------------------------------\
@[<hv>@[<hv 2>(------------------------------------------------------------------------\
@[<hv>@[<hv 2>(------------------------------------------------------------------------\
@]@,)@]@]@,)@]@]@,)@]";
Format.printf "@."
(---
(---
(---
)
)
)
let () =
Format.printf "@.";
Format.printf "@[<hv 2>(------------------------------------------------------------------------@,@[<hv 2>(---@,@[<hv 2>(---@,)@]@,)@]@,)@]";
Format.printf "@."
(------------------------------------------------------------------------
(---(---))
)
let () =
Format.printf "@.";
Format.printf
"@[<hv>@[<hv 2>(------------------------------------------------------------------------\
@[<hv>@[<hv 2>(------------------------------------------------------------------------\
@[<hv>@[<hv 2>(------------------------------------------------------------------------\
@]@,)@]@]@,)@]@]@,)@]";
Format.printf "@."
(------------------------------------------------------------------------
(------------------------------------------------------------------------
(------------------------------------------------------------------------
)
)
)