<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>ocaml on ankit bahuguna</title>
    <link>https://ankitbahuguna.xyz/categories/ocaml/</link>
    <description>Recent content in ocaml on ankit bahuguna</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en</language>
    <lastBuildDate>Mon, 16 Oct 2023 18:48:12 +0530</lastBuildDate>
    <atom:link href="https://ankitbahuguna.xyz/categories/ocaml/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Lazy Evaluation</title>
      <link>https://ankitbahuguna.xyz/posts/lazy-evaluation/</link>
      <pubDate>Mon, 16 Oct 2023 18:48:12 +0530</pubDate>
      <guid>https://ankitbahuguna.xyz/posts/lazy-evaluation/</guid>
      <description>Learning OCaml and Lazy Evaluation Lazy evaluation is a cool concept that delays computations until they&amp;rsquo;re actually needed, saving resources and time. OCaml is great for this, but TypeScript and Go can do it too in their own ways.
OCaml Example OCaml uses lazy streams to generate Fibonacci numbers:
type &amp;#39;a stream = Cons of &amp;#39;a * &amp;#39;a stream Lazy.t let rec fibs a b = Cons (a, lazy (fibs b (a + b))) let rec take n (Cons (x, xs)) = if n &amp;lt;= 0 then [] else x :: take (n - 1) (Lazy.</description>
    </item>
    <item>
      <title>Tail recursion - Part 2</title>
      <link>https://ankitbahuguna.xyz/posts/benchmarking-recursive-and-tail-recursive-functions-in-ocaml/</link>
      <pubDate>Thu, 24 Aug 2023 18:48:12 +0530</pubDate>
      <guid>https://ankitbahuguna.xyz/posts/benchmarking-recursive-and-tail-recursive-functions-in-ocaml/</guid>
      <description>This post is a continuation of the my last post . I did some benchmarking for recursive and non-recursive version of sum function.
open Unix (* Tail recursive version *) let min_list_tail lst = let rec min_tail lst acc = match lst with | [] -&amp;gt; acc | h :: t -&amp;gt; min_tail t (if h &amp;lt; acc then h else acc) in match lst with | [] -&amp;gt; failwith &amp;#34;Empty list&amp;#34; | h :: t -&amp;gt; min_tail t h (* Non-tail recursive version *) let rec min_list_non_tail = function | [] -&amp;gt; failwith &amp;#34;Empty list&amp;#34; | [x] -&amp;gt; x | h :: t -&amp;gt; let min_tail = min_list_non_tail t in if h &amp;lt; min_tail then h else min_tail let generate_large_list size = List.</description>
    </item>
  </channel>
</rss>
