]> gitweb.factorcode.org Git - factor.git/blob - extra/logic/examples/fib2/fib2.factor
6e537e82b00397acafa1bbafe51a32d268a83b7d
[factor.git] / extra / logic / examples / fib2 / fib2.factor
1 ! Copyright (C) 2020 KUSUMOTO Norio.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: logic kernel lists assocs locals math ;
4 IN: logic.examples.fib2
5
6 LOGIC-PREDS: fibo ;
7 LOGIC-VARS: F F1 F2 N N1 N2 ;
8
9 { fibo 1 1 } fact
10 { fibo 2 1 } fact
11 { fibo N F } {
12     { (>) N 2 }
13     [ [ N of 1 - ] N1 is ] { fibo N1 F1 }
14     [ [ N of 2 - ] N2 is ] { fibo N2 F2 }
15     [ [ [ F1 of ] [ F2 of ] bi + ] F is ]
16     [
17         [
18             [ N of ] [ F of ] bi
19             [let :> ( nv fv ) { fibo nv fv } !! rule* ]
20         ] invoke ]
21 } rule