Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
From: Nicolas FRANCOIS (AKA El Bofo) <nicolas.francois@free.fr>
To: caml-list@inria.fr
Subject: Re: [Caml-list] Objects or modules ?
Date: Fri, 5 Jul 2002 02:02:33 +0200	[thread overview]
Message-ID: <20020705020233.49e022fa.nicolas.francois@free.fr> (raw)
In-Reply-To: <20020704011611.621c2fbf.nicolas.francois@free.fr>

Le Thu, 4 Jul 2002 01:16:11 +0200 Nicolas FRANCOIS (AKA El Bofo)
<nicolas.francois@free.fr> a écrit :

> Le Sat, 29 Jun 2002 12:22:52 +0200 Markus Mottl <markus@oefai.at> a
> écrit:
> 
> > You might also want to take a look at Christophe Raffalli's library
> > for formal and numerical calculus to grab a few ideas:
> > 
> >   http://lama-d134.univ-savoie.fr/sitelama/Membres/pages_web/RAFFALLI/formel.html
> 
> OK, I got it. If I really understand this, this is a pre-project for
> FOC. Am I right ?
> 
> Now that I adapted it to OCaml 3.04 (Streams not recognized by standard
> OCaml now), I have a new problem : this is a definition for a quotient
> ring (there's a similar one for a quotient field in case the ideal is
> primitive) ;
> 
> (in algebra.mli)
> module Quotient :
>   functor(R : Euclidian_Ring) ->
>     functor(Elt : One_element with type elem = R.elem) ->
>       Ring with type elem = R.elem
>   
> (in algebra.ml)
> module Quotient = 
>   functor (R : Euclidian_Ring) -> 
>   functor (Elt : One_element with type elem = R.elem) ->
>   struct
>     type elem = R.elem
>     let zero = R.zero
>     let one = R.one
>     let t_of_int = R.t_of_int
>     let (++) = R.(++)
>     let (--) = R.(--)
>     let ( ** ) = R.( ** )
>     let (==) a b = R.(==) (R.(mod) (R.(--) a b) Elt.elt) R.zero
>     let opp = R.opp
>     let normalize x = R.(mod) (R.normalize x) Elt.elt
>     let print x = R.print (normalize x)
>     let write ch x = R.write ch (normalize x)
>     let parse = R.parse
>     let read = R.read
>     let write_bin ch x = R.write_bin ch (normalize x)
>     let read_bin = R.read_bin
>     let conjugate = R.conjugate
>   end
> 
> I'd like to use this functor to create a ring Z/pZ, providing a
> (possibliy prime) integer p. My problem is : what is the correct way to
> use this ?

OK, I found a way : 

(file essai.ml)
open Algebra

module Five : (One_element with type elem = Ring_MZ.elem) =
  struct
    type elem = Ring_MZ.elem
    let elt = Ring_MZ.t_of_int 5
  end
open Five

module Z5Z = Quotient_prime (Ring_MZ) (Five)

open Polynomial

module P = Make(Z5Z)

open P

let p1 = monome (Z5Z.t_of_int 8) 0
	 ++ monome (Z5Z.t_of_int 4) 1
	 ++ monome (Z5Z.t_of_int 1) 2;;
	   
let p2 = monome (Z5Z.t_of_int 3) 1
	 ++ monome (Z5Z.t_of_int 1) 12
	 ++ monome (Z5Z.t_of_int 2) 14;;

print (p1 ** (p2 // p1) ++ (p2 mod p1) -- p2)


(The end for the ones how know the package Formel)

Is there a way to do things simpler ?

\bye


-- 

                   Nicolas FRANCOIS
            http://nicolas.francois.free.fr
 A TRUE Klingon programmer does NOT comment his code
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  reply	other threads:[~2002-07-04 23:54 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-06-29  1:14 Nicolas FRANCOIS
2002-06-29  6:47 ` Chris Hecker
2002-06-30  6:44   ` Blair Zajac
2002-06-29 10:22 ` Markus Mottl
2002-07-03 23:16   ` Nicolas FRANCOIS
2002-07-05  0:02     ` Nicolas FRANCOIS [this message]
2002-07-01  1:19 ` Nicolas FRANCOIS
2002-07-02 17:24 ` Francois Pottier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020705020233.49e022fa.nicolas.francois@free.fr \
    --to=nicolas.francois@free.fr \
    --cc=caml-list@inria.fr \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox