<div dir="ltr">does JHC support template haskell? </div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sat, Jul 5, 2014 at 12:02 PM, Scott Turner <span dir="ltr"><<a href="mailto:2haskell@pkturner.org" target="_blank">2haskell@pkturner.org</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It installed and worked on my Nexus 5.<br>
<div class="HOEnZb"><div class="h5"><br>
On 2014-07-04 00:43, Dominick Samperi wrote:<br>
> Hello John,<br>
> I tried to install the Haskell demo Cube on my Nexus 7<br>
> and got: Error: package file was not signed correctly.<br>
> D<br>
><br>
> On Thu, Jul 3, 2014 at 4:47 PM, John Meacham <<a href="mailto:john@repetae.net">john@repetae.net</a>> wrote:<br>
>> In case anyone wanted to start writing haskell android code now, jhc<br>
>> fully supports android as a target. here is an app made with it<br>
>><br>
>> <a href="https://play.google.com/store/apps/details?id=org.metasepi.ajhc.android.cube" target="_blank">https://play.google.com/store/apps/details?id=org.metasepi.ajhc.android.cube</a><br>
>><br>
>> this was made with Kiwamu's ajhc branch but code has been merged back<br>
>> into the main tree.<br>
>><br>
>> On Wed, Jul 2, 2014 at 5:54 PM, Carter Schonwald<br>
>> <<a href="mailto:carter.schonwald@gmail.com">carter.schonwald@gmail.com</a>> wrote:<br>
>>> This would probably be a great boon for those trying to use haskell for<br>
>>> Android and IOS right? how might the emulation setup work for those?<br>
>>><br>
>>><br>
>>><br>
>>><br>
>>> On Wed, Jul 2, 2014 at 2:20 PM, Carter Schonwald<br>
>>> <<a href="mailto:carter.schonwald@gmail.com">carter.schonwald@gmail.com</a>> wrote:<br>
>>>> wow, this is great work!<br>
>>>><br>
>>>> If theres a clear path to getting the generic tooling into 7.10, i'm all<br>
>>>> for it :) (and willing to help on concrete mechanical subtasks)<br>
>>>><br>
>>>><br>
>>>> On Wed, Jul 2, 2014 at 12:14 PM, Luite Stegeman <<a href="mailto:stegeman@gmail.com">stegeman@gmail.com</a>><br>
>>>> wrote:<br>
>>>>> hi all,<br>
>>>>><br>
>>>>> I've added some code [1] [2] to GHCJS to make it run Template Haskell<br>
>>>>> code on node.js, rather than using the GHC linker. GHCJS has supported TH<br>
>>>>> for a long time now, but so far always relied on native (host) code for it.<br>
>>>>> This is the main reason that GHCJS always builds native and JavaScript code<br>
>>>>> for everything (another is that Cabal Setup.hs scripts need to be compiled<br>
>>>>> to some host-runnable form, but that can also be JavaScript if you have<br>
>>>>> node.js)<br>
>>>>><br>
>>>>> Now besides the compiler having to do twice the work, this has some other<br>
>>>>> disadvantages:<br>
>>>>><br>
>>>>> - Our JavaScript code has the same dependencies (packages) as native<br>
>>>>> code, which means packages like unix or Win32 show up somewhere, depending<br>
>>>>> on the host environment. This also limits our options in choosing<br>
>>>>> JS-specific packages.<br>
>>>>> - The Template Haskell code runs on the host environment, which might be<br>
>>>>> slightly different from the target, for example in integer size or operating<br>
>>>>> system specific constants.<br>
>>>>><br>
>>>>> Moreover, building native code made the GHCJS installation procedure more<br>
>>>>> tricky, making end users think about libgmp or libiconv locations, since it<br>
>>>>> basically required the same preparation as building GHC from source. This<br>
>>>>> change will make installing much easier and more reliable (we still have to<br>
>>>>> update the build scripts).<br>
>>>>><br>
>>>>> How it works is pretty simple:<br>
>>>>><br>
>>>>> - When any code needs to be run on the target (hscCompileCoreExpr,<br>
>>>>> through the Hooks API new in GHC 7.8), GHCJS starts a node.js process with<br>
>>>>> the thrunner.js [3] script,<br>
>>>>> - GHCJS sends its RTS and the Template Haskell server code [1] to<br>
>>>>> node.js, the script starts a Haskell thread running the server,<br>
>>>>> - for every splice, GHCJS compiles it to JavaScript and links it using<br>
>>>>> its incremental linking functionality. The code for the splice, including<br>
>>>>> dependencies that have not yet been sent to the runner (for earlier<br>
>>>>> splices), is then sent in a RunTH [4] message,<br>
>>>>> - the runner loads and runs the code in the Q monad, can send queries to<br>
>>>>> GHCJS for reification,<br>
>>>>> - the runner sends back the result as a serialized Template Haskell AST<br>
>>>>> (using GHC.Generics for the Binary instances).<br>
>>>>><br>
>>>>> All Template Haskell functionality is supported, including recent<br>
>>>>> additions for reifying modules and annotations. I still need to clean up and<br>
>>>>> push the patches for the directory and process packages, but after that, the<br>
>>>>> TH code can read/write files, run processes and interact with them and make<br>
>>>>> network connections, all through node.js.<br>
>>>>><br>
>>>>> Now since this approach is in no way specific to JavaScript, I was<br>
>>>>> wondering if there's any interest in getting this functionality into GHC<br>
>>>>> 7.10 for general cross compilation. The runner would be a native (target)<br>
>>>>> program with dynamic libraries (or object files) being sent over to the<br>
>>>>> target machine (or emulator) for the splices.<br>
>>>>><br>
>>>>> Thanks to Andras Slemmer from Prezi who helped build the initial proof of<br>
>>>>> concept (without reification) at BudHac.<br>
>>>>><br>
>>>>> cheers,<br>
>>>>><br>
>>>>> Luite<br>
>>>>><br>
>>>>> [1]<br>
>>>>> <a href="https://github.com/ghcjs/ghcjs/blob/414eefb2bb8825b3c4c5cddfec4d79a142bc261a/src/Gen2/TH.hs" target="_blank">https://github.com/ghcjs/ghcjs/blob/414eefb2bb8825b3c4c5cddfec4d79a142bc261a/src/Gen2/TH.hs</a><br>


>>>>> [2]<br>
>>>>> <a href="https://github.com/ghcjs/ghcjs-prim/blob/2dffdc2d732b044377037e1d6ebeac2812d4f9a4/GHCJS/Prim/TH/Eval.hs" target="_blank">https://github.com/ghcjs/ghcjs-prim/blob/2dffdc2d732b044377037e1d6ebeac2812d4f9a4/GHCJS/Prim/TH/Eval.hs</a><br>


>>>>> [3]<br>
>>>>> <a href="https://github.com/ghcjs/ghcjs/blob/414eefb2bb8825b3c4c5cddfec4d79a142bc261a/lib/etc/thrunner.js" target="_blank">https://github.com/ghcjs/ghcjs/blob/414eefb2bb8825b3c4c5cddfec4d79a142bc261a/lib/etc/thrunner.js</a><br>


>>>>> [4]<br>
>>>>> <a href="https://github.com/ghcjs/ghcjs-prim/blob/2dffdc2d732b044377037e1d6ebeac2812d4f9a4/GHCJS/Prim/TH/Types.hs#L29" target="_blank">https://github.com/ghcjs/ghcjs-prim/blob/2dffdc2d732b044377037e1d6ebeac2812d4f9a4/GHCJS/Prim/TH/Types.hs#L29</a><br>


>>>>><br>
>>>>> _______________________________________________<br>
>>>>> Glasgow-haskell-users mailing list<br>
>>>>> <a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>
>>>>> <a href="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users" target="_blank">http://www.haskell.org/mailman/listinfo/glasgow-haskell-users</a><br>
>>>>><br>
>>><br>
>>> _______________________________________________<br>
>>> Glasgow-haskell-users mailing list<br>
>>> <a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>
>>> <a href="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users" target="_blank">http://www.haskell.org/mailman/listinfo/glasgow-haskell-users</a><br>
>>><br>
>><br>
>><br>
>> --<br>
>> John Meacham - <a href="http://notanumber.net/" target="_blank">http://notanumber.net/</a><br>
>> _______________________________________________<br>
>> Glasgow-haskell-users mailing list<br>
>> <a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>
>> <a href="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users" target="_blank">http://www.haskell.org/mailman/listinfo/glasgow-haskell-users</a><br>
> _______________________________________________<br>
> Glasgow-haskell-users mailing list<br>
> <a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>
> <a href="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users" target="_blank">http://www.haskell.org/mailman/listinfo/glasgow-haskell-users</a><br>
><br>
<br>
_______________________________________________<br>
Glasgow-haskell-users mailing list<br>
<a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/glasgow-haskell-users" target="_blank">http://www.haskell.org/mailman/listinfo/glasgow-haskell-users</a><br>
</div></div></blockquote></div><br></div>