<feed xmlns='http://www.w3.org/2005/Atom'>
<title>gf-core.git/src/compiler/GF/Data/Operations.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>2021-07-07T07:40:41+00:00</updated>
<entry>
<title>Replace tabs for whitespace in source code</title>
<updated>2021-07-07T07:40:41+00:00</updated>
<author>
<name>John J. Camilleri</name>
<email>john@digitalgrammars.com</email>
</author>
<published>2021-07-07T07:40:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=f2e52d6f2c2bc90febceebdea0268b40ea37476c'/>
<id>urn:sha1:f2e52d6f2c2bc90febceebdea0268b40ea37476c</id>
<content type='text'>
</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>more dead code</title>
<updated>2019-09-20T14:15:28+00:00</updated>
<author>
<name>krangelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2019-09-20T14:15:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=30eef61f0a400d6b9ec77721620e13b8132a9c2c'/>
<id>urn:sha1:30eef61f0a400d6b9ec77721620e13b8132a9c2c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>removed more dead code</title>
<updated>2019-09-20T08:49:29+00:00</updated>
<author>
<name>krangelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2019-09-20T08:49:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=29662350dcdb350479576dfa099037fd71debc1a'/>
<id>urn:sha1:29662350dcdb350479576dfa099037fd71debc1a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>remove obsolete code</title>
<updated>2019-09-20T08:37:50+00:00</updated>
<author>
<name>krangelov</name>
<email>kr.angelov@gmail.com</email>
</author>
<published>2019-09-20T08:37:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=4d79aa8b198f411d0ab6d66d76d9f77dfd3f922f'/>
<id>urn:sha1:4d79aa8b198f411d0ab6d66d76d9f77dfd3f922f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>GF shell: change parse &amp; linearize to obtain useful results from p|l and l|p in more cases</title>
<updated>2015-08-26T13:56:23+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2015-08-26T13:56:23+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=128236eab9f24f7085e1378d3f78306d9cad0658'/>
<id>urn:sha1:128236eab9f24f7085e1378d3f78306d9cad0658</id>
<content type='text'>
These changes are inspired by the gf -cshell implementation of these commands.

The output of the linearize command has been changed to remove superfluous
blank lines and commas, and deliver the result as a list of strings instead of
a single multi-line string. This makes it possible to use -all and pipe the
results to the parse command. This also means that with -treebank -all,
the language tag will be repeated for each result from the same language.

The parse command, when trying to parse with more than one language, would
"forget" other results after a failed parse, and thus not send all
successful parses through the pipe. For example, if English is not the first
language in the grammar,

    p "hello" | l

would output nothing, instead of translations of "hello" to all languages,
forcing the user to write

   p -lang=Eng "hello" | l

instead, to get the expected result. The cause of this behaviour was in the
function fromParse, which was rather messy, so I assume it is not intentional,
but the result of a programming mistake at some point.

The fromParse function has now been refactored from a big recursive function
into 

    fromParse opts = foldr (joinPiped . fromParse1 opts) void

where the helper functions fromParse1 deals with a single parse result and
joinPiped combines multiple parse results.

</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>Various small changes for improved documentation</title>
<updated>2014-10-22T15:45:52+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-22T15:45:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=6ee67cd04ffbce375d7f10e74a5d9eb742d6428d'/>
<id>urn:sha1:6ee67cd04ffbce375d7f10e74a5d9eb742d6428d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove some dead code</title>
<updated>2014-10-20T15:05:43+00:00</updated>
<author>
<name>hallgren</name>
<email>hallgren@chalmers.se</email>
</author>
<published>2014-10-20T15:05:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.adelon.net/gf-core.git/commit/?id=55aebadd5a64eb3f6a566168bbeeeb7cbb4ccb44'/>
<id>urn:sha1:55aebadd5a64eb3f6a566168bbeeeb7cbb4ccb44</id>
<content type='text'>
* The following modules are no longer used and have been removed completely:

	GF.Compile.Compute.ConcreteLazy
	GF.Compile.Compute.ConcreteStrict
	GF.Compile.Refresh

* The STM monad has been commented out. It was only used in
  GF.Compile.SubExpOpt, where could be replaced with a plain State monad,
  since no error handling was needed. One of the functions was hardwired to
  the Err monad, but did in fact not use error handling, so it was turned
  into a pure function.

* The function errVal has been renamed to fromErr (since it is analogous to
  fromMaybe).

* Replaced 'fail' with 'raise' and 'return ()' with 'done' in a few places.

* Some additional old code that was already commented out has been removed.
</content>
</entry>
</feed>
