Warning: Declaration of action_plugin_subjectindex_indexer::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php on line 15

Warning: Declaration of action_plugin_mathjax_enable::register(Doku_Event_Handler &$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/mathjax/action/enable.php on line 62

Warning: Declaration of action_plugin_googleanalytics::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/googleanalytics/action.php on line 40

Warning: Declaration of action_plugin_folded::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/folded/action.php on line 40

Warning: Declaration of action_plugin_hidden::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/hidden/action.php on line 28

Warning: Declaration of action_plugin_include::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/include/action.php on line 354

Warning: Declaration of action_plugin_tag::register(&$contr) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/tag/action.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 532

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818

Warning: "continue" targeting switch is equivalent to "break". Did you mean to use "continue 2"? in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/parser/handler.php on line 1376

Warning: Declaration of SI_EntryDefault::match($text) should be compatible with SI_Entry::match() in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/plugins/EntryDefault.php on line 68

Warning: Declaration of SI_EntryTag::match($text) should be compatible with SI_Entry::match() in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/plugins/EntryTag.php on line 42

Warning: Declaration of SI_EntryVerse::match($text) should be compatible with SI_Entry::match() in /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/plugins/EntryVerse.php on line 1280

Warning: preg_match(): Compilation failed: invalid range in character class at offset 4360 in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/parser/lexer.php on line 118
A PCRE internal error occured. This might be caused by a faulty plugin

Warning: Cannot modify header information - headers already sent by (output started at /data/web/virtuals/28604/virtual/www/subdom/bo/lib/plugins/subjectindex/action/indexer.php:15) in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/actions.php on line 215
YPP1:P9.5.scm [Bo.bule]

======P9.5.scm====== <code shell>#!/usr/bin/env racket #lang racket/base</code> věci kolem deep, stromů, linearizace, hloubková rekurze na seznamech viz Lekce 9, [[P9.scm]] ======= linearize ======= <hidden linearizace vnořených seznamů, rekurze> <code scheme> (define (linearize l) (cond ((null? l) '()) ((list? (car l)) (append (linearize (car l)) (linearize (cdr l)))) (else (cons (car l) (linearize (cdr l)))))) </code> dtto:(append (list (car l)) (linearize ...)) </hidden> <code scheme> (linearize '((1 2 3) (4 5 6) (7 (8)) 9)) </code> ======= atoms ======= <hidden počet atomů ve vnořených seznamech, rekurze> <code scheme> (define (atoms l) (cond ((null? l) 0) ((list? (car l)) (+ (atoms (car l)) (atoms (cdr l)))) (else (+ 1 (atoms (cdr l)))))) </code> </hidden> <code scheme> (atoms '((1 2 3) (4 5 6) (7 (8)) 9)) </code> [[#linearize]] [[#atoms]] jsou si podobné, => [[#deep-accum]] <hidden hloubková akumulační procedura> <code scheme> (define (deep-accum combine nula modif l) (cond ((null? l) nula) ((list? (car l)) (combine (deep-accum combine nula modif (car l)) (deep-accum combine nula modif (cdr l)))) (else (combine (modif (car l)) (deep-accum combine nula modif (cdr l)))))) </code> </hidden> <code scheme> (define deep9 '((1 2 3) (4 5 6) (7 (8)) 9 (1 (1 1) 2 3))) (deep-accum + 0 (lambda (x) 1) '((1 2 3) (4 5 6) (7 (8)) 9)) (deep-accum append '() list '((1 2 3) (4 5 6) (7 (8)) 9)) </code> <hidden počet atomů určité hodnoty> <code scheme> (define (deep-count atom l) (deep-accum + 0 (lambda (x) (if (equal? atom x) 1 0)) l)) </code> </hidden> <code scheme> (deep-count 1 deep9) (deep-count 2 deep9) </code> <hidden přítomnost atomu ve strultuře> <code scheme> (define (deep-find atom l) (deep-accum (lambda (x y) (or x y)) ;combine #f (lambda (x) (equal? atom x)) ;modif l)) </code> </hidden> <code scheme> (deep-find 1 deep9) (deep-find 22 deep9) </code> <hidden hloubkové nahrazování> <code scheme> (define (deep-replace p? modif l) (deep-accum cons '() (lambda (x) (if (p? x) (modif x) x)) l)) </code> </hidden> <code scheme> (deep-replace even? - deep9) </code> <hidden linearize pomocí apply, append map> <code scheme> (define (linearize2 l) (if (list? l) (apply append (map linearize2 l)) (list l);hotovo, prazdny nebo atom )) </code> </hidden> <code scheme> (linearize2 deep9) </code> <hidden atoms2 pomocí apply, append map> <code scheme> (define (atoms2 l) (if (list? l) (apply + (map atoms2 l)) 1;hotovo, prazdny nebo atom )) </code> </hidden> <code scheme> (atoms2 '()) (atoms2 deep9) </code> => deep-accum2, ta ma 2. nedostatky monoidalní operace -> arbitrary, <code scheme> (define (arbitrary mono-op nil) (lambda args (foldr mono-op nil args)));vyšší řád, vrací proceduru! (define cons/n (arbitrary cons '())) (cons/n 1 2 3 4 5 6) </code> todo <code scheme> (define (deep-replace2 p? modif l) l) ; vim: syntax=racket </code>


Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /data/web/virtuals/28604/virtual/www/subdom/bo/inc/auth.php on line 818
YPP1/P9.5.scm.txt · Last modified: 2015/01/15 20:46 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0