<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wikidot="http://www.wikidot.com/rss-namespace">

	<channel>
		<title>Bidirectional Transformations - new forum threads</title>
		<link>http://bx-community.wikidot.com/forum/start</link>
		<description>Threads in forums of the site &quot;Bidirectional Transformations&quot;</description>
				<copyright></copyright>
		<lastBuildDate>Sat, 11 Apr 2026 22:57:12 +0000</lastBuildDate>
		
					<item>
				<guid>http://bx-community.wikidot.com/forum/t-13231986</guid>
				<title>Installing Boomerang in 2020</title>
				<link>http://bx-community.wikidot.com/forum/t-13231986/installing-boomerang-in-2020</link>
				<description>I&#039;d like to try out the Boomerang tutorial, but am having trouble building the project from source.</description>
				<pubDate>Sat, 11 Apr 2020 20:23:54 +0000</pubDate>
				<wikidot:authorName>J Jakes-Schauer</wikidot:authorName>				<wikidot:authorUserId>5626811</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>Is the Boomerang language still being maintained? The GitHub repo [link redacted] hasn't been updated in about two years, and I think it's missing some stuff&#8212;notably the 'INSTALL.txt' instructions mentioned in the documentation.</p> <p>OCaml isn't a language I've much studied. After installing it (v4.05) and some other prerequisites, such as <tt>jbuilder</tt>, I am able to run <tt>make</tt>, whereupon the following error presents itself:</p> <div class="code"> <pre><code>File &quot;stdlib/util.ml&quot;, line 684, characters 9-37: Error: The function applied to this argument has type compare:('a -&gt; 'a -&gt; int) -&gt; 'a list This argument cannot be applied with label ~cmp</code></pre></div> 
				 	]]>
				</content:encoded>							</item>
					<item>
				<guid>http://bx-community.wikidot.com/forum/t-12494314</guid>
				<title>Beginner&#039;s question: additive &quot;information content&quot; of lenses</title>
				<link>http://bx-community.wikidot.com/forum/t-12494314/beginner-s-question:additive-information-content-of-lenses</link>
				<description>I learned about lenses only recently.  I think I&#039;m trying to identify which types of lenses combine in parallel to form other lenses--but there are a lot of types.</description>
				<pubDate>Fri, 06 Sep 2019 05:52:19 +0000</pubDate>
				<wikidot:authorName>J Jakes-Schauer</wikidot:authorName>				<wikidot:authorUserId>5626811</wikidot:authorUserId>				<content:encoded>
					<![CDATA[
						 <p>How are you, ladies &amp; gentlemen?</p> <p>I'm interested in source-to-source program transformations, which I think should be reversible, implying monomorphism. To do this, one needs to be able to invert the components of these transformations, so I was happy to discover the idea of <em>lenses</em>, which plugged a hole in my mental compendium about a decade old.</p> <p>Allow me to raise the very simple example of list decomposition, using Haskell notation. There's an obvious sense in which the inverse of the <tt>cons</tt> operation is pattern-matching on the the list head|tail, with the same notation, <tt>(:)</tt>, used for both.<sup class="footnoteref"><a id="footnoteref-465092-1" href="javascript:;" class="footnoteref" >1</a></sup> Similarly, one can say that destructuring is &quot;the same&quot; as the <tt>(head⨯tail)</tt> joint operation. By another abuse of notation, in the form of entropy: <span class="math-inline">$H(\text{&lt;destructuring&gt;}) = H(\mathtt{head}) + H(\mathtt{tail})$</span>.</p> <p>Now let me &quot;lift&quot; <tt>head</tt> and <tt>tail</tt> into the category of very well behaved (VWB?) lenses, which I'll call <tt>lhead</tt> and <tt>ltail</tt>, as</p> <div class="code"> <pre><code>lhead⭧ = head lhead⭨ x (_:xs) = x:xs ltail⭧ = tail ltail⭨ xs (x:_) = x:xs</code></pre></div> <p>where the <tt>Get</tt> operations are the original <tt>head</tt> and <tt>tail</tt>.<sup class="footnoteref"><a id="footnoteref-465092-2" href="javascript:;" class="footnoteref" >2</a></sup> Intuitively, the joint information provided by <tt>lhead|ltail</tt> is &quot;the same&quot; as that of <tt>cons</tt> plus pattern-matching, in that we could transform programs written in one syntactic convention into the other. There's probably a symmetric argument to show that a lensified <tt>cons</tt> has equivalent expressive power as well. If I were a category theorist, I might draw a little diagram.</p> <p>Unfortunately, I'm asking questions on several topics, here, about which my knowledge level is abecedarian. Are there particular subcategories of lenses which show the algebraic behavior I'm suggesting? Is there a domain-theoretic way of describing the special relationship between <tt>lhead⭨</tt>, <tt>ltail⭨</tt> and <tt>cons</tt>? I have the impression that some kind of higher-order functor should exist to map regular functions to these lenses.<sup class="footnoteref"><a id="footnoteref-465092-3" href="javascript:;" class="footnoteref" >3</a></sup> I hope someone will know what I'm talking about, even if I don't.</p> <p>Thanks,<br /> Jonathan J-S</p> <div class="footnotes-footer"> <div class="title">Footnotes</div> <div class="footnote-footer" id="footnote-465092-1"><a href="javascript:;" >1</a>. Perhaps a bit more obvious than in Lisp, in which the relevant syntax is <tt>car</tt>|<tt>cdr</tt> versus <tt>destructuring-bind</tt>.</div> <div class="footnote-footer" id="footnote-465092-2"><a href="javascript:;" >2</a>. Leaving operations on empty lists undefined for now.</div> <div class="footnote-footer" id="footnote-465092-3"><a href="javascript:;" >3</a>. I'll toss in the Futamura projections while I'm at it.</div> </div> 
				 	]]>
				</content:encoded>							</item>
				</channel>
</rss>