YAP
7.1.0
x.yap
1
new_matrix(
M0
,
Opts0
,
M
)
:-
2
opaque(
M
),
opaque,
3
matrix_to_list
(
M0
,
L
),
4
new_matrix(
L
,
Opts0
,
M
).
5
new_matrix(
'$matrix'
(
_
,
_
,
_
,
_
,
C
),
Opts0
,
M
)
:-
new_matrix,
6
C
=..[
_
|
L
],
7
new_matrix(
L
,
Opts0
,
M
).
8
new_matrix(
C
,
Opts0
,
M
)
:-
9
functor
(
C
, c,
_
),
functor,
10
C
=..[
_
|
L
],
11
new_matrix(
L
,
Opts0
,
M
).
12
new_matrix(
List
,
Opts0
,
M
)
:-
13
foldl2
(el_list(
MDims
),
List
,
Flat
, [],
0
,
Dim
),
foldl2,
14
fix_opts(
Opts0
,
Opts
),
15
foldl2
(process_new_opt,
Opts
,
Type
,
TypeF
, [
Dim
|
MDims
],
Dims
,
Base
),
16
(
var
(
TypeF
)
->
guess_type(
Flat
,
Type
)
;
guess_type ),
17
matrix_new
(
Type
,
Dims
,
Flat
,
M
),
18
(
nonvar
(
Base
)
->
matrix_base(
M
,
Base
)
;
matrix_base ).
19
new_matrix([
H
|
List
],
Opts0
,
M
)
:-
20
length
( [
H
|
List
],
Size
),
21
fix_opts(
Opts0
,
Opts
),
22
foldl2
(process_new_opt(
Base
),
Opts
,
Type
,
TypeF
, [
Size
],
Dims
),
23
(
var
(
TypeF
)
->
guess_type( [
H
|
List
],
Type
)
;
guess_type ),
24
matrix_new
(
Type
,
Dims
, [
H
|
List
],
M
),
25
(
nonvar
(
Base
)
->
matrix_base(
M
,
Base
)
;
matrix_base ).
26
27
fix_opts(
V
,
_
)
:-
28
var
(
V
),
var,
29
throw
(error(instantiation_error,
V
)).
30
fix_opts(
A
=
B
, [
A
=
B
]).
31
fix_opts(
A
,
A
)
:-
32
is_list
(
A
),
is_list.
33
fix_opts(
V
,
_
)
:-
34
var
(
V
),
var,
35
throw
(error(domain_error(options
=
V
), new_matrix)).
36
37
guess_type(
List
,
Type
)
:-
38
maplist( integer,
List
),
maplist,
39
Type
=
maplist.
40
guess_type(
List
,
Type
)
:-
41
maplist( number,
List
),
maplist,
42
Type
=
maplist.
43
guess_type(
_List
, terms ).
44
45
process_new_opt(
_Base
, dim
=
Dim
,
Type
,
Type
,
_
,
Dim
)
:-
process_new_opt.
46
process_new_opt(
_Base
, type
=
Type
,
_
,
Type
,
Dim
,
Dim
)
:-
process_new_opt.
47
process_new_opt(
Base
, base
=
Base
,
Type
,
Type
,
Dim
,
Dim
)
:-
process_new_opt.
48
process_new_opt(
_Base
,
Opt
,
Type
,
Type
,
Dim
,
Dim
)
:-
49
throw
(error(domain_error(opt
=
Opt
), new_matrix)).
50
51
el_list(
_
,
V
,
_Els
,
_NEls
,
_I0
,
_I1
)
:-
52
var
(
V
),
var,
53
var.
54
el_list([
N
|
Extra
],
El
,
Els
,
NEls
,
I0
,
I1
)
:-
55
foldl2
(el_list(
Extra
),
El
,
Els
,
NEls
,
0
,
N
),
foldl2,
56
I1
is
I0
+
1
.
57
el_list([
N
],
El
,
Els
,
NEls
,
I0
,
I1
)
:-
58
El
=
[
_
|
_
],
59
length
(
El
,
N
),
60
append
(
El
,
NEls
,
Els
),
61
I1
is
I0
+
1
.
62
63
is_list/1
is_list( ?_List_ )
matrix_to_list/2
matrix_to_list(+ Matrix,- Elems)
throw/1
throw(+ Ball)
functor/3
functor( T, F, N)
nonvar/1
nonvar( T)
var/1
var( T)
append/3
append(? List1,? List2,? List3)
length/2
length(? L,? S)
foldl2/6
foldl2(: Pred, + List, ? X0, ? X, ? Y0, ? Y)
foldl2/7
v
matrix_new/4
matrix_new(+ Type,+ Dims,+ List,- Matrix)
library
x.yap
Generated by
1.9.3