<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>roblox &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<atom:link href="https://jessewarden.com/tag/roblox/feed" rel="self" type="application/rss+xml" />
	<link>https://jessewarden.com</link>
	<description>Software &#124; Fitness &#124; Gaming</description>
	<lastBuildDate>Fri, 11 Dec 2020 14:11:48 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://jessewarden.com/wp-content/uploads/2016/08/cropped-Lambda2-32x32.png</url>
	<title>roblox &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<link>https://jessewarden.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Strictly Typed Functional Programming for Roblox</title>
		<link>https://jessewarden.com/2020/12/strictly-typed-functional-programming-for-roblox.html</link>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Fri, 11 Dec 2020 14:11:48 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[functionalprogramming]]></category>
		<category><![CDATA[hypatia]]></category>
		<category><![CDATA[roblox]]></category>
		<guid isPermaLink="false">https://jessewarden.com/?p=6058</guid>

					<description><![CDATA[I managed to get Hypatia, an Elm and PureScript like typed Functional Programming language that compiles to Lua, running in Roblox. Roblox is a 3D game engine that has a ton of already built games and editor where games are built in Lua. My kids spend way too much time and our money in it. [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p>I managed to get <a href="https://github.com/kindl/Hypatia">Hypatia</a>, an <a href="https://elm-lang.org/">Elm</a> and <a href="https://www.purescript.org/">PureScript</a> like typed Functional Programming language that compiles to <a href="https://www.lua.org/">Lua</a>, running in <a href="https://www.roblox.com/">Roblox</a>. Roblox is a 3D game engine that has a ton of already built games and editor where games are built in Lua. My kids spend way too much time and our money in it. I couldn&#8217;t get <a href="https://amulet.works/">Amulet</a>, another similar language, too compile, but Hypatia &#8220;spoke to me&#8221; more. <a href="https://adventofcode.com/">Advent of Code 2020</a> this year taught me dealing with no types and race conditions is painful. I really wanted to explore what other language options there are that compile to Lua.</p>



<span id="more-6058"></span>



<p>The workflow is you write in Hypatia, compile, make the compiled Lua require statements to the Roblox version, and <a href="https://rojo.space/">Rojo</a>, a <a href="https://www.rust-lang.org/">Rust</a> built development tool, will sync your Lua directly into Roblox. You can then call the exposed functions directly from other Lua (i.e. Buttons, events, etc). I&#8217;m thinking of automating that require change with Python&#8230; or maybe Lua.</p>



<p>Compiling Hypatia required a couple of smart <a href="https://www.haskell.org/">Haskell</a> devs at work to help me compile. <a href="https://www.haskell.org/cabal/">Cabal</a> didn&#8217;t work but <a href="https://docs.haskellstack.org/en/stable/README/">Stack</a> worked no problem on my Mac M1. Hypatia might compile JavaScript too, not sure.</p>



<p>Anyway, still need to figure out side effects (still learning what the heck a f -> Unit is), and how to deal with coroutines and various other side effects since Hypatia doesn&#8217;t handle them like Elm does, but super excited to continue exploring this.</p>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="758" height="528" src="https://jessewarden.com/wp-content/uploads/2020/12/1607567400967.jpeg" alt="" class="wp-image-6059" srcset="https://jessewarden.com/wp-content/uploads/2020/12/1607567400967.jpeg 758w, https://jessewarden.com/wp-content/uploads/2020/12/1607567400967-300x209.jpeg 300w" sizes="(max-width: 758px) 100vw, 758px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="431" src="https://jessewarden.com/wp-content/uploads/2020/12/1607567400793.jpeg" alt="" class="wp-image-6060" srcset="https://jessewarden.com/wp-content/uploads/2020/12/1607567400793.jpeg 800w, https://jessewarden.com/wp-content/uploads/2020/12/1607567400793-300x162.jpeg 300w, https://jessewarden.com/wp-content/uploads/2020/12/1607567400793-768x414.jpeg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>



<figure class="wp-block-image size-large"><img decoding="async" width="800" height="336" src="https://jessewarden.com/wp-content/uploads/2020/12/1607567401935.jpeg" alt="" class="wp-image-6061" srcset="https://jessewarden.com/wp-content/uploads/2020/12/1607567401935.jpeg 800w, https://jessewarden.com/wp-content/uploads/2020/12/1607567401935-300x126.jpeg 300w, https://jessewarden.com/wp-content/uploads/2020/12/1607567401935-768x323.jpeg 768w" sizes="(max-width: 800px) 100vw, 800px" /></figure>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
