maude-help AT lists.cs.illinois.edu
Subject: Maude-help mailing list
List archive
- From: Yevgen Voronenko <yvoronen AT ece.cmu.edu>
- To: Steven Eker <eker AT csl.sri.com>
- Cc: maude-help AT peepal.cs.uiuc.edu
- Subject: Re: [Maude-help] higher-order functions
- Date: Mon, 16 Jan 2006 15:28:09 -0500
- List-archive: <http://maude.cs.uiuc.edu/pipermail/maude-help>
- List-id: Maude help list <maude-help.maude.cs.uiuc.edu>
Thanks a lot, Steven!
This really helped.
Steven Eker wrote:
Oops! There was a typo in my previous code. Here a slightly more general version of the technique that runs without error in Maude 2.2:
fmod AP{X :: TRIV, Y :: TRIV} is
sort Func{X,Y} .
op _[_] : Func{X,Y} X$Elt -> Y$Elt [prec 17] .
endfm
fmod LIST-MAP{X :: TRIV, Y :: TRIV} is
inc AP{X,Y} .
pr LIST{X} .
pr LIST{Y} .
var E : X$Elt .
var L : List{X} .
var F : Func{X,Y} .
op map : List{X} Func{X,Y} -> List{Y} .
eq map(nil, F) = nil .
eq map(E L, F) = F[E] map(L, F) .
endfm
fmod TEST is
pr LIST-MAP{Nat,String} .
pr CONVERSION .
var N : Nat .
op ordinal : -> Func{Nat,String} .
eq ordinal[N] = string(N, 10) +
if (N quo 10) rem 10 == 1 then "th"
else
if N rem 10 == 1 then "st"
else if N rem 10 == 2 then "nd"
else if N rem 10 == 3 then "rd"
else "th" fi fi fi
fi .
endfm
red map(1 2 3 5 7 11 13 17 19 23, ordinal) .
Steven
- [Maude-help] higher-order functions, Yevgen Voronenko, 01/12/2006
- Re: [Maude-help] higher-order functions, Paco Duran, 01/16/2006
- Re: [Maude-help] higher-order functions, Steven Eker, 01/16/2006
- Re: [Maude-help] higher-order functions, Steven Eker, 01/16/2006
- Re: [Maude-help] higher-order functions, Yevgen Voronenko, 01/16/2006
- Re: [Maude-help] higher-order functions, Steven Eker, 01/16/2006
Archive powered by MHonArc 2.6.16.