summaryrefslogtreecommitdiffabout
path: root/src/ellinika/conjugator.scm
Side-by-side diff
Diffstat (limited to 'src/ellinika/conjugator.scm') (more/less context) (ignore whitespace changes)
-rw-r--r--src/ellinika/conjugator.scm73
1 files changed, 43 insertions, 30 deletions
diff --git a/src/ellinika/conjugator.scm b/src/ellinika/conjugator.scm
index 001a882..536b48e 100644
--- a/src/ellinika/conjugator.scm
+++ b/src/ellinika/conjugator.scm
@@ -505,37 +505,50 @@ AND i.tense=\"~A\" AND i.ident=f.ident"
(cond
((and (string=? (conj-info #:thema conj) "synt")
(conj-info #:aux conj))
- (cons
- (cons
- (let* ((verb-conj
- (car (conjugate verb voice "sub" "Αόριστος"
- #:nopart)))
- (form (list-ref verb-conj 2))
- (part (conj-info #:particle conj)))
- (cond
- (form
-; (format #t "FORM ~A FROM ~A~%" form verb-conj);;FIXME
- (append
+ (let ((aparemfato-list
(map
- (lambda (aux flag)
- (if (char=? flag #\-)
- #f
- (elstr->string
- (if part
- (elstr-append part " " aux " " form)
- (elstr-append aux " " form)))))
- (conjugation:table
- (car (conjugate (conj-info #:aux conj) "act" "ind"
- (conj-info #:auxtense conj))))
- (string->list (or (verb-get vinfo #:accmap)
- (conj-info #:accmap conj)
- "000000")))
- (list (verb-get vinfo #:conj)
- (conjugation:attested verb-conj))))
- (else
- #f)))
- (conj-info #:fold conj))
- prev))
+ (lambda (x)
+ (let ((t (conjugation:table x)))
+ (if t
+ (cons
+ (list-ref t 2)
+ (conjugation:attested x))
+ #f)))
+ (conjugate verb voice "sub" "Αόριστος"
+ #:nopart)))
+ (part (conj-info #:particle conj))
+ (fold-id (conj-info #:fold conj)))
+ (fold
+ (lambda (param prev)
+ (if (not param)
+ prev
+ (let ((aparemfato (car param))
+ (attested (cdr param)))
+ (cons
+ (cons
+ (append
+ (map
+ (lambda (aux flag)
+ (if (char=? flag #\-)
+ #f
+ (elstr->string
+ (if part
+ (elstr-append part " " aux " "
+ aparemfato)
+ (elstr-append aux " " aparemfato)))))
+ (conjugation:table
+ (car (conjugate (conj-info #:aux conj)
+ "act" "ind"
+ (conj-info #:auxtense conj))))
+ (string->list (or (verb-get vinfo #:accmap)
+ (conj-info #:accmap conj)
+ "000000")))
+ (list (verb-get vinfo #:conj)
+ attested))
+ fold-id)
+ prev))))
+ prev
+ aparemfato-list)))
((and (string=? (conj-info #:thema conj) "synt")
(conj-info #:auxtense conj))
(let ((part (conj-info #:particle conj)))

Return to:

Send suggestions and report system problems to the System administrator.