diff options
Diffstat (limited to '2023/05/06/OCaml_News_20230506/index.html')
| -rw-r--r-- | 2023/05/06/OCaml_News_20230506/index.html | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/2023/05/06/OCaml_News_20230506/index.html b/2023/05/06/OCaml_News_20230506/index.html deleted file mode 100644 index eafd35fe..00000000 --- a/2023/05/06/OCaml_News_20230506/index.html +++ /dev/null @@ -1,264 +0,0 @@ -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="UTF-8"> -<meta name="viewport" - content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> -<meta http-equiv="X-UA-Compatible" content="ie=edge"> - - <meta name="author" content="含暮秋"> - - - <meta name="subtitle" content="暮秋小屋"> - - - <meta name="description" content="不卑不亢的码农, 朴素的民谣诗人"> - - - <meta name="keywords" content="韩暮秋,MuqiuHan"> - - - - -<title>OCaml News 2023/5/6 | 暮秋小屋</title> - - - - - -<style> - @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Noto+Sans+SC:wght@300;400;500;700&family=Roboto+Mono&display=swap'); -</style> - - - - <!-- stylesheets list from _config.yml --> - - <link rel="stylesheet" href="/css/style.css"> - - - - - - <!-- scripts list from _config.yml --> - - <script src="/js/frame.js"></script> - - - - - - <script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script> - <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script> - - - - - - - - <!-- hexo injector head_end start --> -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/katex.min.css"> - -<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/style.css"> -<!-- hexo injector head_end end --><meta name="generator" content="Hexo 6.3.0"></head> - <body> - <div class="mask-border"> - </div> - - <div class="wrapper"> - - <div class="header"> - <div class="flex-container"> - <div class="header-inner"> - <div class="site-brand-container"> - <a href="/"> - - 暮秋小屋 - - </a> - </div> - <div id="menu-btn" class="menu-btn" onclick="toggleMenu()"> - Menu - </div> - <nav class="site-nav"> - <ul class="menu-list"> - - - <li class="menu-item"> - <a href="/">主页</a> - </li> - - - - <li class="menu-item"> - <a href="/tags/Technique/">技术</a> - </li> - - - - <li class="menu-item"> - <a href="/Projects">项目</a> - </li> - - - - <li class="menu-item"> - <a href="/categories/gallery/">日记本</a> - </li> - - - - <li class="menu-item"> - <a href="/about">关于</a> - </li> - - - - </ul> - </nav> - </div> - </div> -</div> - - - <div class="main"> - <div class="flex-container"> - <article id="post"> - - - <div class="post-head"> - <div class="post-info"> - <div class="tag-list"> - - - <span class="post-tag"> - <a href="/tags/OCaml/"> - OCaml - </a> - </span> - - <span class="post-tag"> - <a href="/tags/Technique/"> - Technique - </a> - </span> - - - </div> - <div class="post-title"> - - - OCaml News 2023/5/6 - - - </div> - <span class="post-date"> - May 6, 2023 - </span> - </div> - <div class="post-img"> - - <div class="h-line-primary"></div> - - </div> -</div> - <div class="post-content"> - <h1 id="二〇二三年四月二十九日-二〇二三年五月六日"><a href="#二〇二三年四月二十九日-二〇二三年五月六日" class="headerlink" title="二〇二三年四月二十九日 - 二〇二三年五月六日"></a>二〇二三年四月二十九日 - 二〇二三年五月六日</h1><h2 id="Dune正在探索集成包管理,提供统一的开发体验"><a href="#Dune正在探索集成包管理,提供统一的开发体验" class="headerlink" title="Dune正在探索集成包管理,提供统一的开发体验"></a>Dune正在探索集成包管理,提供统一的开发体验</h2><p>dune, opam, opam-monorepo团队在几个月前联合起来,共同解决这个来自之前社区报告中的重要痛点。</p> -<p>在dune的github上有对于这项工作的详细解释:<a target="_blank" rel="noopener" href="https://github.com/ocaml/dune/issues/7680">https://github.com/ocaml/dune/issues/7680</a></p> -<p><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/explorations-on-package-management-in-dune/12101">https://discuss.ocaml.org/t/explorations-on-package-management-in-dune/12101</a></p> -<p><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/explorations-on-package-management-in-dune/12101">论坛原帖:https://discuss.ocaml.org/t/explorations-on-package-management-in-dune/12101</a></p> -<h2 id="OCaml-x2F-C-FFI对象的生命周期问题"><a href="#OCaml-x2F-C-FFI对象的生命周期问题" class="headerlink" title="OCaml/C FFI对象的生命周期问题"></a>OCaml/C FFI对象的生命周期问题</h2><p>OCaml manual中有一节名为<a target="_blank" rel="noopener" href="https://v2.ocaml.org/manual/intfc.html#s%3Ac-gc-harmony"><br>5 Living in harmony with the garbage collector</a>,其中介绍了六个规则,帮助编写C FFI。</p> -<p>对于如下C代码:</p> -<figure class="highlight c"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line">value <span class="title function_">pair</span><span class="params">(value a, value b)</span> {</span><br><span class="line"> CAMLparam2(a, b); <span class="comment">/*required*/</span></span><br><span class="line"> CAMLlocal1(r); <span class="comment">/*required*/</span></span><br><span class="line"> r = caml_alloc(<span class="number">2</span>,<span class="number">0</span>);</span><br><span class="line"> Store_field(r,<span class="number">0</span>,a);</span><br><span class="line"> Store_field(r,<span class="number">1</span>,b);</span><br><span class="line"> CAMLreturn(r); <span class="comment">/*required*/</span></span><br><span class="line">}</span><br></pre></td></tr></table></figure> - -<p>这里的<code>CAMLlocal1(r)</code>并不是必须的,如果a和b是立即值,那么其他注释有<code>require</code>的代码。也不是必须的,对于这六个规则应该持保留态度,它们并不是必须严格遵守的,只是为了更安全。</p> -<p><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ocaml-c-ffi-object-lifetimes/12099">论坛原帖:https://discuss.ocaml.org/t/ocaml-c-ffi-object-lifetimes/12099</a></p> -<h2 id="使用Elm-Style编写函数式Web应用"><a href="#使用Elm-Style编写函数式Web应用" class="headerlink" title="使用Elm Style编写函数式Web应用"></a>使用Elm Style编写函数式Web应用</h2><p>Fmlib 是一个函数式库,其中包含以下组件:</p> -<ul> -<li>Fmlib_std: 标准的数据结构(B树等)</li> -<li>Fmlib_pretty: Pretty Printing</li> -<li>Fmlib_parse: Parsing</li> -<li>Fmlib_browser: Web应用程序</li> -<li>Fmlib_js: 与浏览器/Nodejs交互</li> -</ul> -<p>github仓库:<a target="_blank" rel="noopener" href="https://github.com/hbr/fmlib">https://github.com/hbr/fmlib</a></p> -<p>一些简单的示例:<a target="_blank" rel="noopener" href="https://hbr.github.io/fmlib/webapp/index.html">https://hbr.github.io/fmlib/webapp/index.html</a></p> -<p><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/ann-functional-web-applications-running-in-the-browser/11984">论坛原帖:https://discuss.ocaml.org/t/ann-functional-web-applications-running-in-the-browser/11984</a></p> -<h2 id="使用OCaml编写NeoVIM插件"><a href="#使用OCaml编写NeoVIM插件" class="headerlink" title="使用OCaml编写NeoVIM插件"></a>使用OCaml编写NeoVIM插件</h2><p>VCaml是一个用于在 OCaml 中编写 Neovim 插件的库。</p> -<p>github仓库: <a target="_blank" rel="noopener" href="https://github.com/janestreet/vcaml">https://github.com/janestreet/vcaml</a></p> -<p>论坛上相关的讨论: <a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/repo-for-nvim-plugins-in-ocaml-neovim-vcaml/12049">https://discuss.ocaml.org/t/repo-for-nvim-plugins-in-ocaml-neovim-vcaml/12049</a></p> -<h2 id="Format和PPrint在实践中的对比"><a href="#Format和PPrint在实践中的对比" class="headerlink" title="Format和PPrint在实践中的对比"></a>Format和PPrint在实践中的对比</h2><p><a target="_blank" rel="noopener" href="https://discuss.ocaml.org/t/format-vs-pprint-in-practice/12087">论坛原帖: https://discuss.ocaml.org/t/format-vs-pprint-in-practice/12087</a></p> -<h2 id="BLAS-x2F-LAPACK的OCaml-Binding"><a href="#BLAS-x2F-LAPACK的OCaml-Binding" class="headerlink" title="BLAS/LAPACK的OCaml Binding"></a>BLAS/LAPACK的OCaml Binding</h2><p>这个 OCaml 库绑定了两个广泛使用的数学 FORTRAN 库:</p> -<ul> -<li>BLAS : <a href="www.netlib.org/blas/">www.netlib.org/blas/</a></li> -<li>LAPAK : <a href="www.netlib.org/lapack/">www.netlib.org/lapack/</a></li> -</ul> -<p>Github仓库:<a target="_blank" rel="noopener" href="https://github.com/mmottl/lacaml">https://github.com/mmottl/lacaml</a></p> -<h2 id="基于Effects的实验性WebServer"><a href="#基于Effects的实验性WebServer" class="headerlink" title="基于Effects的实验性WebServer"></a>基于Effects的实验性WebServer</h2><p>Github仓库: <a target="_blank" rel="noopener" href="https://github.com/avsm/eeww">https://github.com/avsm/eeww</a></p> -<h2 id="纯(?)函数式SSH库"><a href="#纯(?)函数式SSH库" class="headerlink" title="纯(?)函数式SSH库"></a>纯(?)函数式SSH库</h2><p>awa-ssh是一个使用ISC协议开源的OCaml SSH库<br>Github仓库:<a target="_blank" rel="noopener" href="https://github.com/mirage/awa-ssh">https://github.com/mirage/awa-ssh</a></p> - -</div> - -<script> - window.onload = detectors(); -</script> - <div class="post-footer"> - <div class="h-line-primary"></div> - <nav class="post-nav"> - <div class="prev-item"> - - <div class="icon arrow-left"></div> - <div class="post-link"> - <a href="/2023/05/09/OCaml_News_20230509/">Prev</a> - </div> - - </div> - <div class="next-item"> - - <div class="icon arrow-right"></div> - <div class="post-link"> - <a href="/2023/04/29/OCaml_News_20230429/">Next</a> - </div> - - </div> - </nav> -</div> - - - <div class="post-comment"> - - - - - - - -</div> - - -</article> - </div> - </div> - - <div class="footer"> - <div class="flex-container"> - <div class="footer-text"> - - - | - - - 希望路过的人可以添点柴火让这里暖和点 - - </div> - </div> -</div> - - </div> - - - - - </body> -</html> |
