From db9aeb2fa28541b5793eb5b8fdd49a0dad8f6d47 Mon Sep 17 00:00:00 2001 From: hallgren Date: Mon, 22 Sep 2014 14:05:17 +0000 Subject: [PATCH] haskell-bind/PGF2.hsc: unexport functions that break referential transparency loadConcr, unloadConcr and addLiteral modify the Concr structure as a side effect. This means that other functions with a Concr argument (e.g. parse and linearize) are no longer pure. Possible solutions: 1. Don't try to hide the imperative nature of the C run-time system: remove all uses of unsafePerformIO and let all functions operate in the IO monad. 2. Don't export functions with side effects. Perhaps the desired functionality of loadConcr, unloadConcr and addLiteral can be folded into readPGF. The Concr structures can then treaded as immutable after after the readPGF function returns... --- src/runtime/haskell-bind/PGF2.hsc | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/runtime/haskell-bind/PGF2.hsc b/src/runtime/haskell-bind/PGF2.hsc index ad7deb1b1..32034bcfc 100644 --- a/src/runtime/haskell-bind/PGF2.hsc +++ b/src/runtime/haskell-bind/PGF2.hsc @@ -14,9 +14,8 @@ module PGF2 (-- * PGF PGF,readPGF,abstractName,startCat, - loadConcr,unloadConcr, -- * Concrete syntax - Concr,languages,parse,linearize,addLiteral, + Concr,languages,parse,linearize, -- * Trees Expr,readExpr,showExpr,unApp, -- * Morphology