Changes to version 3.5.2:
Control.Search.SetFunctions
(implementing
set functions), Control.Search.AllValues
(implementing a strong
encapsulation as I/O operations), Control.Search.Unsafe
(implementing strong encapsulation as non I/O operations, but this
method has a non-declarative behavior), and Control.Search.SearchTree
(implementing search trees which are mainly used in KiCS2 to implement
encapsulation).
upload
)
Changes to version 3.5.1:
:add ...
by compiling new imports.
Changes to version 3.5.0:
--extended
is the default.
In order to switch off the extensions for functional patterns
and anonymous free variables, one can use the options
NoFunctionalPatterns
and NoAnonFreeVars
, respectively.
Changes to version 3.4.2:
Data.Functor.Compose
and Data.Functor.Const
added.
NoImplicitPrelude
and NoDataDeriving
.
tmpdir
added to RC file (~/.pakcsrc
) in order to
redefine the location of a temporary directory (e.g., if the
default location /tmp
is not writable for the PAKCS process).
verboserc
and dynamicmessages
removed from RC file
since they are no longer used.
:set
when verbosity level
is greater than 1.
Changes to version 3.3.0:
:type
for expressions with free variables corrected.
Monad
context are specialized to IO
.
Data
context are specialized to Bool
.
Floating
context are specialized to Float
.
newtype
declarations integrated into the compiler.
Thus, the FlatCurry files produced by the front end contain
newtype
declarations which are eliminated before the Prolog code
is generated.
Changes to version 3.2.0:
(/==)
added.
(=:=)
and (=:<=)
changed from external
to defined operations that call the external operations
constrEq
and nonstrictEq
, respectively. This is meaningful
to keep the Data
constraint for (=:=)
and (=:<=)
whereas
external operations have no class contexts.
pakcsinitrc
is no longer used.
Changes to version 2.3.0: bug fixes and
Data
with operations (===)
(equality) and
aValue
(non-deterministic value generator) added to the prelude.
For each data
declaration, Data
instances for the defined type
are automatically derived as long as the defined type is first-order
(i.e., does not contain functional types).
Free variable have type class constraint Data
.
The motivation for this design and its advantages are described in a
DECLARE/WFLP'19 paper.
FilePath
, Directory
, Distribution
, Time
,
IOExts
, ReadShowTerm
removed
(now available in packages filepath
, directory
, distribution
,
time
, io-extra
and read-legacy
).
System
split into System.Process
, System.CPUTime
,
System.Environment
.
System.Process
is available in package process
.
The rest remains in the library.
https://wiki.haskell.org/MonadFail_Proposal
).
lib/Prelude.curry
is written
to lib/.curry/pakcs-3.2.0/Prelude.fcy
(and similarly all
other intermediate files). This avoids inconsistencies
of intermediate files when different Curry systems are used.
Changes to version 2.2.0:
update
command and support for caret
and tilde comparison operators in dependency descriptions)
Changes to version 2.1.2: bug fixes and
Changes to version 2.1.0: bug fixes and
chr
defined as total operation
update
operation)
Changes to version 2.0.2:
AllSolutions
, Findall
, SearchTree
, SearchTreeGenerators
,
SearchTreeTraversal
, ValueSequence removed
(available in package
searchtree
as
Control...`)
AnsiCodes
removed (available in package ansi-terminal
as System.Console.ANSI.Codes
)
Array
removed (available in package array
as Data.Array
)
Combinatorial
removed (available in package combinatorial
)
CPNS
removed
(available in package cpns
as Network.CPNS
)
Dequeue
removed (available in package queue
as Data.Queue
)
Distribtion
: curryCompilerRevisionVersion
added,
operations related to load paths removed (available in package
currypath
in library System.CurryPath
),
operations to call the front end removed (available in package
frontend-exec
in library System.FrontendExec
)
Format
removed (available in package printf
as Data.Format
)
NamedSocket
removed
(available in package cpns
as Network.NamedSocket
)
Nat
removed (available in package peano
as Data.Nat
)
Profile
removed
(available in package profiling
as Debug.Profile
)
PropertyFile
removed
(available in package propertyfile
as Data.PropertyFile
)
Random
removed (available in package random
as System.Random
)
RedBlackTree
, SetRBT
, and TableRBT
removed
(available in package redblacktree
as Data.RedBlackTree
,
Data.Set.RBTree
, and Data.Table.RBTree
with slightly renamed API
operations).
SCC
removed (available in package scc
as Data.SCC
)
Socket
removed
(available in package socket
as Network.Socket
)
SetFunctions
removed
(available in package setfunctions
as Control.SetFunctions
)
Traversal
removed
(available in package traversal
as Data.Traversal
)
Test.EasyCheck
removed (available in package easycheck
).
The import of this library should be replaced by Test.Prop
.
Test.Contract
removed
(available in package contracts
)
curry-ast
).
currytools
(available as curry-cpnsd
in package cpns
)
currytools
(available as curry-cgi
in package html-cgi
)
peval-noshare
.
Changes to version 2.0.0:
Findall
: oneValue
added
SetFunctions
: minValueBy
and maxValueBy
added, minValue
and maxValue
depend on Ord
context.
-cpmexec
added to script pakcs-makecgi
.
This version has almost the same functionality as version 1.15.0 but adds type classes similar to Haskell 98. In addition to version 1.15.0 and type classes, this version contains the following changes:
define
command removed (since it was based on a quite restricted parser)
+free
) removed since it has many restrictions
and is no longer compatible with type classes.
pakcs --base-version
or inside
Curry programs by the operation Distribution.baseVersion
.
The versioning of base libraries is intended to be used by CPM.
src
(instead of
curry2prolog
as in versions 1.x).
xxx.prim_c2p
to xxx.pakcs
(for conformity with other Curry compilers).
SetFunctions
: minValueBy
and maxValueBy
added, minValue
and maxValue
depend on Ord
context.
cypm
:
Assertion
(no longer used since currytest
has been replaced by currycheck
)
CLP*
(now in package clp-pakcs
)
CSV
(now available as Text.CSV
in package csv
)
GlobalVariable
(now available in package global-variables
)
Parser
(now available in package fl-parser
)
PlProfileData
(now available in package profiling
)
Ports
(now available in package ports
)
Pretty
(now available in package wl-pprint
as Text.Pretty
,
where Pretty.pretty
has been renamed to Text.Pretty.showWidth
)
RegExp
(now available in package regexp
)
Changes to version 1.14.2:
cypm
.
cypm
.
Instructions how to install these tools are included
in the PAKCS manual.
RegExp.match
: order of arguments swapped
match
for regexps.
cypm
:
AbstractCurry.*
(now in package abstract-curry
)
Bootstrap3Style
(now in package html
)
CLPB
(now in package clpbool
)
CHR
(now in package chr-curry
)
CategorizedHtmlList
(now in package html
)
CurryStringClassifier
(now in package addtypes
)
Database.ERDGoodies
(now in package ertools
)
Database.ERD
and Database.CDBI.*
(now in package cdbi
)
FlatCurry.*
(now in package flatcurry
)
FlatCurry.Annotated.*
(now in package flatcurry-annotated
)
GraphInductive
(now in package graph-inductive
)
GUI
(now in package gui
)
HTML
(now in package html
as library HTML.Base
)
HtmlParser
(now in package html
)
KeyDatabaseSQLite
(now in package keydb
)
JavaScript
(now in package javascript
)
Mail
(now in package mail
)
Markdown
(now in package markdown
)
Prolog
(now in package prolog
)
Rewriting.*
(now in package rewriting
)
URL
(now in package url
)
WUI
and WUIjs
(now in package wui
)
XML
(now in package xml
)
XmlConv
(now in package xml
)
tools/ui
removed since they are available as
CPM package ui
.
:xml
removed (since the XML format is deprecated).
Changes to version 1.14.0:
Database.ERD...
added (formerly part of ER currytools).
IOExts
and Global
use system commands
lockfile-create
and lockfile-remove
instead of lockfile
for internal file synchronization in order to remove dependency
on package procmail
.
Nat
for Peano numbers added.
Rewriting.*
for term rewriting in Curry extended
to deal with rewriting strategies, narrowing strategies,
critical pairs, definitional trees.
Sort
: ...Sort operations renamed to ...SortBy and
...Sort operations with standard ordering added.
State
with an implementation of the state monad added.
Test.EasyCheck
split into two modules to have less
import dependencies when putting properties into a module.
Test.Prop
added as a clone of Test.EasyCheck
which defines
the interface but no implementation so that it does not import
any other library.
import dependencies when putting properties into a module.
contracts
to transform contracts (specifications, pre/postconditions)
into run-time assertions.
currytools
.
currytools
.
parsecurry
removed.
cpns
(Curry Port Name Server) and www
(web scripting)
moved to currytools
.
pakcs toolname
or curry toolname
.
cymake
changed to curry frontend
.
curry analysis
(CASS): option --all
added.
curry analysis
(CASS): analysis Functional
added and
analysis Deterministic
modified so that it considers encapsulated search.
curry analysis
(CASS): simple termination analysis Terminating
added.
curry analysis
(CASS): analysis TypesInValues
added.
curry check
supports also testing with float arguments.
--
.
PAKCSINSTALLDIR
to specify the location where PAKCS is moved
after the build process.
Changes to version 1.13.0:
Success
is now a type synonym for Bool
and
success
is defined as True
in the prelude.
Success
and Bool
.
Prelude.compare
and related comparison operations
are flexible (instead of rigid as before) on user-defined datatypes.
It still suspends when comparing two variables or
one variable with a number or character.
(===)
and (&&>)
removed
RandomVariable
and
RandomValue
added
(currently only supported by SWI-Prolog)
findFileInLoadPath
, lookupFileInLoadPath
, readFirstFileInLoadPath
,
getLoadPath
, getLoadPathForFile
) removed since they are deprecated
(use operations like getLoadPathForModule
and
lookupModuleSourceInLoadPath
instead of the deprecated operations
since they handle hierarchical module names better)
List
: diagonal
added
meta/*
removed (since they have been replaced
by libraries with hierachical names, see below)
import FlatCurry
by
import FlatCurry.Types import FlatCurry.Files
import FlatCurryGoodies
by
import FlatCurry.Goodies
import FlatCurryPretty
by
import FlatCurry.Pretty
import FlatCurryRead
by
import FlatCurry.Read
import FlatCurryShow
by
import FlatCurry.Show
import FlatCurryXML
by
import FlatCurry.XML
import CompactFlatCurry
by
import FlatCurry.Compact
import AnnotatedFlatCurry
by
import FlatCurry.Annotated.Types
import AnnotatedFlatGoodies
by
import FlatCurry.Annotated.Goodies
import AnnotatedFlatCurryPretty
by
import FlatCurry.Annotated.Pretty
import FlexRigid
by
import FlatCurry.FlexRigid
currycheck
for automated test execution added
Changes to version 1.13.0:
import AbstractCurry
by
import AbstractCurry.Types import AbstractCurry.Files
import AbstractCurryGoodies
by
import AbstractCurry.Select import AbstractCurry.Build
import PrettyAbstract
by
import AbstractCurry.Pretty
CLP.FD
added: its functionality is similar to the old
library CLPFD
, but the interface is different so that other
FD constraint solvers are easier to connect.
Changes to version 1.12.0:
Prelude.==
is flexible (instead of rigid as before).
It still suspends when comparing two variables or
one variable with a number or character.
However, if Prelude.==
is (positively) used in conditions of rules,
it is automatically transformed into a unification constraint
so that it does not suspend.
Pretty
: code and interface updated, e.g., some combinators
renamed and new combinators added (e.g., to support ANSI formatting
and colorisation of documents)
Changes to version 1.11.5:
0b101010
or 0B101010
can now be lexed
and are converted to the integer value 42
.
FunctionInversion
added
AnnotatedFlatCurryPretty
added
Either
extended with functions fromLeft
and fromRight
ShowS
added
AnsiCodes
added
===
added
Changes to version 1.11.4:
Distribution
and FlatCurry
adapted for
this purpose.
AbstractCurryGoodies
added.
CHR
and CHRcompiled
to implement Constraint Handling Rules
in Curry added together with various examples in examples/CHR
.
Changes to version 1.11.3:
+free
is not set.
:load ~/rev
loads module rev
from the home directory.
edit
accepts module names (instead of arbitrary file names).
curry
in the bin directory.
pakcs :set v2 :load rev
).
Old options (except setting of .pakcsrc
properties) are no longer
necessary and, thus, not supported.
:save
: if no argument is given, the executable
is saved with the initial expression main
.
:source
added: allows separate viewing of visible or
qualified function definitions.
let var=exp
has now command syntax: :define var=exp
args
for setting run-time arguments added.
Prelude
: solve
and &&>
added.
Findall
: rewriteAll
and rewriteSome
added (experimental!).
Prolog
added.
Unsafe
: compareAnyTerm
and isGround
added.
CASS
: new analysis RequiredValues
added.
bindingopt
for transforming Boolean equalities
into constraint equalities added.
data2xml
for data conversion to XML and back added.
Changes to version 1.11.2:
--safe
added to support safe execution without
I/O actions.
.pakcsrc
file.
AbsCurry
, AbsCurryIO
, DaVinci
,
Flat
, FlatCurryTools
, FlatTools
, FlatXML
, Flat2FCY
, Tk
)
moved to tools/lib_reprecated
.
div
changed (to be compatible with Haskell)
and quot
, rem
, divMod
, quotRem
added.
catch
adapted.
catchFail
omitted (use catch
instead).
Findall
.
Distribution
: front-end parameters extended by supporting
"special" (i.e., aribrary) arguments.
Distribution
: front-end paramter outfile
removed and
front-end parameter htmldir
added.
Distribution
and FlatCurry
: after calling the front end,
an exception is raised if the front end returns with an error
(due to an illegal source program).
Float
and Integer
: Power operators added.
Float
: hyperbolic/ arc sine/cosine/tangent operators added.
HTML
: formMetaInfo
added, HTML header changed to HTML5.
SetFunctions
: notEmpty
added.
Format
and RegExp
added.
erd2curry
updated to new version with support for SQLite database.
Bug fix in code generation w.r.t. checking of cardinality constraints.
spicey
(web framework) added and updated with a RESTful interface
for entities.
Changes to version 1.11.1:
.icurry
).
prog
are now stored in the file prog
(instead of prog.state
as in previous releases).
Function
added.
HTML
: default (white) background for body of generated
web pages removed (since this is usually defined in css files).
IO
: Fixed a bug in hGetLine
which caused an end-of-file error
when reading a non-empty line without a newline termination.
currytools/typeinference
) added.
This tool can be used to annotate expressions in FlatCurry programs
with their type.
Changes to version 1.11.0:
Directory
: Operation copyFile
added.
FlatCurry
extended to represent typed expressions
by a new constructor Typed
.
SetFunctions
: Operations choose
and select
added.
parsecurry
.
Changes to version 1.10.1:
fcase
expressions and non-linear patterns in left-hand sides
of program rules.
:>
" (instead of "->
" in old syntax).
:=
" for setting field values
similarly to record updates (instead of "=
" in the old syntax).
print '\''
fixed
GUI
: types of various main operations (like runInitGUI
,
runInitGUIwithParams
) slightly changed (for compatibility with
KiCS2 version of the library). The old operations are still
available as runInitGUI'
etc.
Markdown
: title argument added to markdownText2CompleteHTML
.pakcsrc
file extended.