<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gf-core.git/src/compiler/GF/Infra/SIO.hs, branch optimize</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<id>https://git.adelon.net/gf-core.git/atom?h=optimize</id>
<link rel='self' href='https://git.adelon.net/gf-core.git/atom?h=optimize'/>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/'/>
<updated>2025-08-02T14:39:31+00:00</updated>
<entry>
<title>define return in terms of pure, &gt;&gt; as *&gt;, mappend as &lt;&gt;</title>
<updated>2025-08-02T14:39:31+00:00</updated>
<author>
<name>Inari Listenmaa</name>
<email>inari.listenmaa@gmail.com</email>
</author>
<published>2024-09-09T17:43:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=b914a25de326dd937e3a1d05f4eefb46af6da7b4'/>
<id>urn:sha1:b914a25de326dd937e3a1d05f4eefb46af6da7b4</id>
<content type='text'>
In preparation for deprecation, see https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/semigroup-monoid and https://gitlab.haskell.org/ghc/ghc/-/wikis/proposal/monad-of-no-return
</content>
</entry>
<entry>
<title>Fix infinite recursion on error</title>
<updated>2020-10-26T16:21:22+00:00</updated>
<author>
<name>Andreas Källberg</name>
<email>anka.213@gmail.com</email>
</author>
<published>2020-10-26T15:05:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=1ff66006b8d928da01a56ca9f930f07b3cb2a01e'/>
<id>urn:sha1:1ff66006b8d928da01a56ca9f930f07b3cb2a01e</id>
<content type='text'>
The implementation was meant to lift from SIO to IO,
but instead it was just the identity function,
which means that `fail = id . fail` and we have an infinite loop.
</content>
</entry>
<entry>
<title>MonadFail: Make backwards-compatible</title>
<updated>2020-09-05T18:23:07+00:00</updated>
<author>
<name>Andreas Källberg</name>
<email>anka.213@gmail.com</email>
</author>
<published>2020-09-05T18:23:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=7268253f5ae4b4883d28faa87b3e63295f04abfd'/>
<id>urn:sha1:7268253f5ae4b4883d28faa87b3e63295f04abfd</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fix most build errors</title>
<updated>2020-08-05T16:48:24+00:00</updated>
<author>
<name>Andreas Källberg</name>
<email>anka.213@gmail.com</email>
</author>
<published>2020-08-05T15:29:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=0581d6827ea2e4aac371eb05f3bf5508f3f40edc'/>
<id>urn:sha1:0581d6827ea2e4aac371eb05f3bf5508f3f40edc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>GF.Infra.SIO: The SIO monad now supports putStr in addition to putStrLn</title>
<updated>2015-08-31T12:22:13+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-08-31T12:22:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=1c86783e172bf1922b32e5503bc3be1f66f240b5'/>
<id>urn:sha1:1c86783e172bf1922b32e5503bc3be1f66f240b5</id>
<content type='text'>
Also included some unrelated minor changes.
</content>
</entry>
<entry>
<title>GF Shell: refactoring for improved modularity and reusability:</title>
<updated>2015-08-13T10:49:50+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-08-13T10:49:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=87e64a804cbe5848d20f0555dedae42e1516cbbc'/>
<id>urn:sha1:87e64a804cbe5848d20f0555dedae42e1516cbbc</id>
<content type='text'>
+ Generalize the CommandInfo type by parameterizing it on the monad
  instead of just the environment.
+ Generalize the commands defined in
  GF.Command.{Commands,Commands2,CommonCommands,SourceCommands,HelpCommand}
  to work in any monad that supports the needed operations.
+ Liberate GF.Command.Interpreter from the IO monad.
  Also, move the current PGF from CommandEnv to GFEnv in
  GF.Interactive, making the command interpreter even more generic.
+ Use a state monad to maintain the state of the interpreter in
  GF.{Interactive,Interactive2}.
</content>
</entry>
<entry>
<title>gf -cshell: preliminary support for the C run-time system in the GF shell</title>
<updated>2015-08-10T14:12:51+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-08-10T14:12:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=8d6e61a8df4480385a1f2ef29a96f6a88af9e3ba'/>
<id>urn:sha1:8d6e61a8df4480385a1f2ef29a96f6a88af9e3ba</id>
<content type='text'>
Some C run-time functionality is now available in the GF shell, by starting
GF with 'gf -cshell' or 'gf -crun'. Only limited functionality is available
when running the shell in these modes:

- You can only import .pgf files, not source files.
- The -retain flag can not be used and the commands that require it to work
  are not available.
- Only 18 of the 40 commands available in the usual shell have been
  implemented. The 'linearize' and 'parse' commands are the only ones
  that call the C run-time system, and they support only a limited set of
  options and flags. Use the 'help' commmands for details.
- A new command 'generate_all', that calls PGF2.generateAll, has been added.
  Unfortuntaly, using it causes 'segmentation fault'.

This is implemented by adding two new modules: GF.Command.Commands2 and
GF.Interactive2. They are copied and modified versions of GF.Command.Commands
and GF.Interactive, respectively. Code for unimplemented commands and other
code that has not been adapted to the C run-time system has been left in
place, but commented out, pending further work.
</content>
</entry>
<entry>
<title>GF shell: fixed problems with previous change of the -retain flag</title>
<updated>2015-02-27T16:42:09+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-02-27T16:42:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=632aab83c3111d198f701de9e72878aa0ceb7015'/>
<id>urn:sha1:632aab83c3111d198f701de9e72878aa0ceb7015</id>
<content type='text'>
Because the prompt included the name of the abstract syntax, the loading
of the PGF was forced even if -retain was used. Even worse,
if an error occured while loading the PGF, it was repeated and caught
every time the prompt was printed, creating an infite loop. The solution
is to not print the name of the abstract syntax when the grammar is
imported with -retain, which is the way things were before anyway.
</content>
</entry>
<entry>
<title>GF shell: create a PGF also when the -retain flag is used</title>
<updated>2015-02-27T13:49:13+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-02-27T13:49:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=e0bc6308e07edf4302242e434932c9da42c162bd'/>
<id>urn:sha1:e0bc6308e07edf4302242e434932c9da42c162bd</id>
<content type='text'>
The commands available in the shell after import -retain are now a superset
of the commands available after import without -retain.

The PGF is created lazily, so there should be no performance penalty if
the PGF isn't needed. If there are errors, they won't be reported until a
command that uses the PGF is entered.
</content>
</entry>
<entry>
<title>Fix warnings in 16 modules, mostly forward compatibility warnings from GHC 7.8</title>
<updated>2014-08-13T22:16:18+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-08-13T22:16:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=cd5193b7e19e7ff5e49cdeafe149fdeec8e19fb0'/>
<id>urn:sha1:cd5193b7e19e7ff5e49cdeafe149fdeec8e19fb0</id>
<content type='text'>
</content>
</entry>
</feed>
