Run Code
|
API
|
Code Wall
|
Users
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
tried some polynomials 1
Language:
Ada
Assembly
Bash
C#
C++ (gcc)
C++ (clang)
C++ (vc++)
C (gcc)
C (clang)
C (vc)
Client Side
Clojure
Common Lisp
D
Elixir
Erlang
F#
Fortran
Go
Haskell
Java
Javascript
Kotlin
Lua
MySql
Node.js
Ocaml
Octave
Objective-C
Oracle
Pascal
Perl
Php
PostgreSQL
Prolog
Python
Python 3
R
Rust
Ruby
Scala
Scheme
Sql Server
Swift
Tcl
Visual Basic
Layout:
Vertical
Horizontal
{-# LANGUAGE InstanceSigs #-} -- {-# LANGUAGE DatatypeContexts #-} main :: IO () main = do print $ foldr (\x acc -> x * acc) 1 Null print $ foldr (\x acc -> x * acc) 1 (2:+:Null) print $ 1 :+: 2 :+: 3 :+: 4 :+: Null infixr 5 :+: data Polynomial a = Null | a :+: Polynomial a deriving (Show, Eq) deg :: (Num a, Eq a) => Polynomial a -> Int deg Null = -1 deg (c :+: cs) = deg cs + 1 instance Foldable Polynomial where --foldr :: (Num a) => (a -> b -> b) -> b -> Polynomial a -> b foldr f z Null = z foldr f z (c :+: cs) = f c (foldr f z cs) instance (Num a, Eq a) => Num (Polynomial a) where (+) Null g = g (+) h Null = h (+) h@(a :+: as) g@(b :+: bs) | deg h == deg g = a + b :+: as + bs | deg h > deg g = a :+: as + g | otherwise = b :+: h + bs (*) Null g = Null (*) f Null = Null (*) f (b :+: Null) = foldr (\x acc -> (b * x) :+: acc) Null f -- (*) f@(a :+: as) g@(b :+: bs) = -- foldl (\x acc -> (a * x) :+: acc) Polinomial a (deg f) negate Null = Null negate (c :+: cs) = negate c :+: negate cs abs Null = Null abs (c :+: cs) = abs c :+: abs cs signum = undefined fromInteger 0 = Null fromInteger i = fromInteger i :+: Null toInteger Null = 0 toInteger (c :+: Null) = c toInteger g = undefined ---------- data GF2 = Zero | One deriving (Show) instance Num (GF2) where (+) Zero Zero = Zero (+) Zero One = One (+) One Zero = One (+) One One = Zero (*) Zero Zero = Zero (*) Zero One = Zero (*) One Zero = Zero (*) One One = One (-) Zero Zero = Zero (-) Zero One = One (-) One Zero = One (-) One One = Zero abs = id signum = id fromInteger k | odd k = One | otherwise = Zero --data GF n = 0,1..n -- deriving (Show, Num)
ghc
Show compiler warnings
[
+
] Compiler args
[
+
]
Show input
Compilation time: 0.83 sec, absolute running time: 0.24 sec, cpu time: 0.17 sec, memory peak: 3 Mb, absolute service time: 1,08 sec
latest
|
history
1 2 1 :+: (2 :+: (3 :+: (4 :+: Null)))