Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.forth > #58771 > unrolled thread

Rosetta: Amb (2.)

Started by"Robert L." <No_spamming@noWhere_7073.org>
First post2017-05-07 13:12 +0000
Last post2017-05-07 13:12 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.lang.forth


Contents

  Rosetta: Amb (2.) "Robert L." <No_spamming@noWhere_7073.org> - 2017-05-07 13:12 +0000

#58771 — Rosetta: Amb (2.)

From"Robert L." <No_spamming@noWhere_7073.org>
Date2017-05-07 13:12 +0000
SubjectRosetta: Amb (2.)
Message-ID<oen6fe$cjv$1@gioia.aioe.org>
> The Amb operator takes a variable number of expressions (or
> values if that's simpler in the language) and yields a correct
> one which will satisfy a constraint in some future
> computation, thereby avoiding failure.


> The task is to somehow implement Amb, and demonstrate it with
> a program which chooses one word from each of the following
> four sets of character strings to generate a four-word
> sentence:
> 
> "the" "that" "a"
> "frog" "elephant" "thing"
> "walked" "treaded" "grows"
> "slowly" "quickly"
> 
> The constraint to be satisfied is that the last character of
> each word (other than the last) is the same as the first
> character of its successor.
> 
> The only successful sentence is "that thing grows slowly";
> other combinations do not satisfy the constraint and thus
> fail.


(use amb amb-extras
     srfi-13 (only srfi-13 string-take string-take-right)
     srfi-1  (only srfi-1 every))

(define (good? a b)
  (equal? (string-take-right a 1) (string-take b 1)))

(amb-find
  (begin
    (define answer
      (list (amb "the" "that" "a")
            (amb "frog" "elephant" "thing")
            (amb "walked" "treaded" "grows")
            (amb "slowly" "quickly")))
    (amb-assert (every good? answer (cdr answer)))
    answer))

 ===>
("that" "thing" "grows" "slowly")

In Forth?

-- 
[E]verything that happens in the world is for the benefit of the Jewish
People....  G-D ... created the world for the sake of the Jewish People, and it
is our responsibility to implement the Torah---absolute morality and the
blueprint of creation---in it.
www.IsraelNationalNews.com/Articles/Article.aspx/2125#.UUnBZxx4xn8

[toc] | [standalone]


Back to top | Article view | comp.lang.forth


csiph-web