Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
clean-platform
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
13
Issues
13
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Incidents
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
clean-and-itasks
clean-platform
Commits
d18b2b99
Commit
d18b2b99
authored
May 22, 2018
by
Mart Lubbers
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add generic functions for getting constructor indices etc
parent
70602a89
Pipeline
#11316
passed with stage
in 1 minute and 47 seconds
Changes
3
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
244 additions
and
0 deletions
+244
-0
src/libraries/OS-Independent/Data/GenCons.dcl
src/libraries/OS-Independent/Data/GenCons.dcl
+49
-0
src/libraries/OS-Independent/Data/GenCons.icl
src/libraries/OS-Independent/Data/GenCons.icl
+194
-0
tests/linux64/test.icl
tests/linux64/test.icl
+1
-0
No files found.
src/libraries/OS-Independent/Data/GenCons.dcl
0 → 100644
View file @
d18b2b99
definition
module
Data
.
GenCons
import
StdGeneric
from
Data
.
Maybe
import
::
Maybe
class
gCons
a
|
conses
{|*|},
consName
{|*|},
consIndex
{|*|},
consNum
{|*|}
a
/**
* Give an instance for a type that matches the given constructor name
*
* @param constructor name
* @result maybe a value for that type
*/
consByName
::
String
->
Maybe
a
|
conses
{|*|},
consName
{|*|}
a
/**
* Gives the name for the constructor
*
* @param Value for a type
* @result Constructor name
*/
generic
consName
a
::
a
->
String
derive
consName
CONS
of
{
gcd_name
},
UNIT
,
PAIR
,
EITHER
,
OBJECT
,
FIELD
,
RECORD
,
Int
,
Bool
,
Char
,
Real
,
String
,
File
,(),(,),(,,),(,,,),(,,,,),(,,,,,),(,,,,,,),(,,,,,,,),(,,,,,,,,),(,,,,,,,,,),(,,,,,,,,,,),(,,,,,,,,,,,),(,,,,,,,,,,,,),(,,,,,,,,,,,,,),(,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),{},{!},[],[!
],[
!],[!!]
/**
* Gives the index of the constructor. Note that this is always 0 if the type is not an ADT
*
* @param Value for a type
* @result Index
*/
generic
consIndex
a
::
a
->
Int
derive
consIndex
CONS
of
{
gcd_index
},
UNIT
,
PAIR
,
EITHER
,
OBJECT
,
FIELD
,
RECORD
,
Int
,
Bool
,
Char
,
Real
,
String
,
File
,(),(,),(,,),(,,,),(,,,,),(,,,,,),(,,,,,,),(,,,,,,,),(,,,,,,,,),(,,,,,,,,,),(,,,,,,,,,,),(,,,,,,,,,,,),(,,,,,,,,,,,,),(,,,,,,,,,,,,,),(,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),{},{!},[],[!
],[
!],[!!]
/**
* Gives a list of values for every constructor, for non-ADTs it is a singleton list with one item. For ADTs it is a list with the length of the number of constructors
*
* @result list of values with one value for each constructor
*/
generic
conses
a
::
[
a
]
derive
conses
CONS
,
UNIT
,
PAIR
,
EITHER
,
OBJECT
,
FIELD
,
RECORD
,
Int
,
Bool
,
Char
,
Real
,
String
,(),(,),(,,),(,,,),(,,,,),(,,,,,),(,,,,,,),(,,,,,,,),(,,,,,,,,),(,,,,,,,,,),(,,,,,,,,,,),(,,,,,,,,,,,),(,,,,,,,,,,,,),(,,,,,,,,,,,,,),(,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),{},{!},[],[!
],[
!],[!!],(->)
/**
* Gives the number of constructors
*
* @param value of the type (unused, just needed for type checking)
* @result number of constructors
*/
generic
consNum
a
::
a
->
Int
derive
consNum
CONS
of
{
gcd_arity
},
UNIT
,
PAIR
,
EITHER
,
OBJECT
,
FIELD
,
RECORD
,
Int
,
Bool
,
Char
,
Real
,
String
,
File
,(),(,),(,,),(,,,),(,,,,),(,,,,,),(,,,,,,),(,,,,,,,),(,,,,,,,,),(,,,,,,,,,),(,,,,,,,,,,),(,,,,,,,,,,,),(,,,,,,,,,,,,),(,,,,,,,,,,,,,),(,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),{},{!},[],[!
],[
!],[!!]
src/libraries/OS-Independent/Data/GenCons.icl
0 → 100644
View file @
d18b2b99
implementation
module
Data
.
GenCons
import
StdEnv
,
StdGeneric
,
Control
.
GenBimap
,
_SystemStrictLists
import
Data
.
Functor
import
Data
.
List
import
Data
.
Maybe
consByName
::
String
->
Maybe
a
|
conses
{|*|},
consName
{|*|}
a
consByName
a
=
let
cs
=
conses
{|*|}
in
((!!)
cs
)
<$>
elemIndex
a
(
map
consName
{|*|}
cs
)
generic
consName
a
::
a
->
String
consName
{|
CONS
of
{
gcd_name
}|}
f
x
=
gcd_name
consName
{|
UNIT
|}
_
=
"UNIT"
consName
{|
PAIR
|}
f
g
(
PAIR
x
y
)
=
f
x
consName
{|
EITHER
|}
f
g
(
LEFT
x
)
=
f
x
consName
{|
EITHER
|}
f
g
(
RIGHT
y
)
=
g
y
consName
{|
OBJECT
|}
f
(
OBJECT
x
)
=
f
x
consName
{|
RECORD
|}
f
(
RECORD
x
)
=
f
x
consName
{|
FIELD
|}
f
(
FIELD
x
)
=
f
x
consName
{|
Int
|}
i
=
"INT"
consName
{|
Bool
|}
b
=
"BOOL"
consName
{|
Char
|}
c
=
"CHAR"
consName
{|
Real
|}
r
=
"REAL"
consName
{|
String
|}
s
=
"STRING"
consName
{|
File
|}
s
=
"FILE"
consName
{|[]|}
_
_
=
"[]"
consName
{|[!]|}
_
_
=
"[!]"
consName
{|[
!]|}
_
_
=
"[ !]"
consName
{|[!!]|}
_
_
=
"[!!]"
consName
{|{}|}
_
_
=
"{}"
consName
{|{!}|}
_
_
=
"{!}"
consName
{|(->)|}
_
_
_
=
"->"
consName
{|()|}
_
=
"()"
consName
{|(,)|}
_
_
_
=
"(,)"
consName
{|(,,)|}
_
_
_
_
=
"(,,)"
consName
{|(,,,)|}
_
_
_
_
_
=
"(,,,)"
consName
{|(,,,,)|}
_
_
_
_
_
_
=
"(,,,,)"
consName
{|(,,,,,)|}
_
_
_
_
_
_
_
=
"(,,,,,)"
consName
{|(,,,,,,)|}
_
_
_
_
_
_
_
_
=
"(,,,,,,)"
consName
{|(,,,,,,,)|}
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,)"
consName
{|(,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,)"
consName
{|(,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,)"
consName
{|(,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"
consName
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
"(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)"
generic
consIndex
a
::
a
->
Int
consIndex
{|
CONS
of
{
gcd_index
}|}
f
x
=
gcd_index
consIndex
{|
UNIT
|}
_
=
0
consIndex
{|
PAIR
|}
f
g
(
PAIR
x
y
)
=
f
x
consIndex
{|
EITHER
|}
f
g
(
LEFT
x
)
=
f
x
consIndex
{|
EITHER
|}
f
g
(
RIGHT
y
)
=
g
y
consIndex
{|
OBJECT
|}
f
(
OBJECT
x
)
=
f
x
consIndex
{|
RECORD
|}
f
(
RECORD
x
)
=
f
x
consIndex
{|
FIELD
|}
f
(
FIELD
x
)
=
f
x
consIndex
{|
Int
|}
i
=
0
consIndex
{|
Bool
|}
b
=
0
consIndex
{|
Char
|}
c
=
0
consIndex
{|
Real
|}
r
=
0
consIndex
{|
String
|}
_
=
0
consIndex
{|
File
|}
_
=
0
consIndex
{|[]|}
_
_
=
0
consIndex
{|[!]|}
_
_
=
0
consIndex
{|[
!]|}
_
_
=
0
consIndex
{|[!!]|}
_
_
=
0
consIndex
{|{}|}
_
_
=
0
consIndex
{|{!}|}
_
_
=
0
consIndex
{|(->)|}
_
_
_
=
0
consIndex
{|()|}
_
=
0
consIndex
{|(,)|}
_
_
_
=
0
consIndex
{|(,,)|}
_
_
_
_
=
0
consIndex
{|(,,,)|}
_
_
_
_
_
=
0
consIndex
{|(,,,,)|}
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,)|}
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,)|}
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,)|}
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
consIndex
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
0
generic
conses
a
::
[
a
]
conses
{|
CONS
|}
f
=
[
CONS
(
hd
f
)]
conses
{|
UNIT
|}
=
[
UNIT
]
conses
{|
PAIR
|}
f
g
=
[
PAIR
x
y
\\
x
<-
f
,
y
<-
g
]
conses
{|
EITHER
|}
f
g
=
map
LEFT
f
++
map
RIGHT
g
conses
{|
OBJECT
|}
f
=
map
OBJECT
f
conses
{|
RECORD
|}
f
=
map
RECORD
f
conses
{|
FIELD
|}
f
=
map
FIELD
f
conses
{|
Int
|}
=
[
0
]
conses
{|
Bool
|}
=
[
True
]
conses
{|
Char
|}
=
[
'
\0
'
]
conses
{|
Real
|}
=
[
0.0
]
conses
{|
String
|}
=
[
""
]
conses
{|{}|}
_
=
[{}]
conses
{|{!}|}
_
=
[{!}]
conses
{|(->)|}
_
_
=
[
const
undef
]
conses
{|[]|}
f
=
[[
]]
conses
{|[!]|}
f
=
[[!]]
conses
{|[
!]|}
f
=
[[
!]]
conses
{|[!!]|}
f
=
[[!!]]
derive
conses
(),(,),(,,),(,,,),(,,,,),(,,,,,),(,,,,,,),(,,,,,,,),(,,,,,,,,),(,,,,,,,,,),(,,,,,,,,,,),(,,,,,,,,,,,),(,,,,,,,,,,,,),(,,,,,,,,,,,,,),(,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,),(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)
generic
consNum
a
::
a
->
Int
consNum
{|
CONS
of
{
gcd_arity
}|}
f
x
=
gcd_arity
consNum
{|
UNIT
|}
_
=
1
consNum
{|
PAIR
|}
f
_
(
PAIR
x
y
)
=
f
x
consNum
{|
EITHER
|}
f
_
(
LEFT
x
)
=
f
x
consNum
{|
EITHER
|}
_
g
(
RIGHT
y
)
=
g
y
consNum
{|
OBJECT
|}
f
(
OBJECT
x
)
=
f
x
consNum
{|
RECORD
|}
f
(
RECORD
x
)
=
f
x
consNum
{|
FIELD
|}
f
(
FIELD
x
)
=
f
x
consNum
{|
Int
|}
_
=
1
consNum
{|
Bool
|}
_
=
1
consNum
{|
Char
|}
_
=
1
consNum
{|
Real
|}
_
=
1
consNum
{|
String
|}
_
=
1
consNum
{|
File
|}
_
=
1
consNum
{|[]|}
_
_
=
1
consNum
{|[!]|}
_
_
=
1
consNum
{|[
!]|}
_
_
=
1
consNum
{|[!!]|}
_
_
=
1
consNum
{|{}|}
_
_
=
1
consNum
{|{!}|}
_
_
=
1
consNum
{|(->)|}
_
_
_
=
1
consNum
{|()|}
_
=
1
consNum
{|(,)|}
_
_
_
=
1
consNum
{|(,,)|}
_
_
_
_
=
1
consNum
{|(,,,)|}
_
_
_
_
_
=
1
consNum
{|(,,,,)|}
_
_
_
_
_
_
=
1
consNum
{|(,,,,,)|}
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,)|}
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,)|}
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
consNum
{|(,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,)|}
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
_
=
1
tests/linux64/test.icl
View file @
d18b2b99
...
...
@@ -46,6 +46,7 @@ import qualified Data.Func
import
qualified
Data
.
Functor
import
qualified
Data
.
Functor
.
Identity
import
qualified
Data
.
GenCompress
import
qualified
Data
.
GenCons
import
qualified
Data
.
GenDefault
import
qualified
Data
.
GenDiff
import
qualified
Data
.
GenEq
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment