S k i p t o c o n t e n t
N a v i g a t i o n M e n u
A p p e a r a n c e s e t t i n g s
P l a t f o r m
A I C O D E C R E A T I O N
G i t H u b C o p i l o t W r i t e b e t t e r c o d e w i t h A I
G i t H u b S p a r k B u i l d a n d d e p l o y i n t e l l i g e n t a p p s
G i t H u b M o d e l s M a n a g e a n d c o m p a r e p r o m p t s
M C P R e g i s t r y N e w I n t e g r a t e e x t e r n a l t o o l s
D E V E L O P E R W O R K F L O W S
A c t i o n s A u t o m a t e a n y w o r k f l o w
C o d e s p a c e s I n s t a n t d e v e n v i r o n m e n t s
I s s u e s P l a n a n d t r a c k w o r k
C o d e R e v i e w M a n a g e c o d e c h a n g e s
A P P L I C A T I O N S E C U R I T Y
G i t H u b A d v a n c e d S e c u r i t y F i n d a n d f i x v u l n e r a b i l i t i e s
C o d e s e c u r i t y S e c u r e y o u r c o d e a s y o u b u i l d
S e c r e t p r o t e c t i o n S t o p l e a k s b e f o r e t h e y s t a r t
E X P L O R E
● W h y G i t H u b
● D o c u m e n t a t i o n
● B l o g
● C h a n g e l o g
● M a r k e t p l a c e
V i e w a l l f e a t u r e s
S o l u t i o n s
B Y C O M P A N Y S I Z E
● E n t e r p r i s e s
● S m a l l a n d m e d i u m t e a m s
● S t a r t u p s
● N o n p r o f i t s
B Y U S E C A S E
● A p p M o d e r n i z a t i o n
● D e v S e c O p s
● D e v O p s
● C I / C D
● V i e w a l l u s e c a s e s
B Y I N D U S T R Y
● H e a l t h c a r e
● F i n a n c i a l s e r v i c e s
● M a n u f a c t u r i n g
● G o v e r n m e n t
● V i e w a l l i n d u s t r i e s
V i e w a l l s o l u t i o n s
R e s o u r c e s
E X P L O R E B Y T O P I C
● AI
● S o f t w a r e D e v e l o p m e n t
● D e v O p s
● S e c u r i t y
● V i e w a l l t o p i c s
E X P L O R E B Y T Y P E
● C u s t o m e r s t o r i e s
● E v e n t s & w e b i n a r s
● E b o o k s & r e p o r t s
● B u s i n e s s i n s i g h t s
● G i t H u b S k i l l s
S U P P O R T & S E R V I C E S
● D o c u m e n t a t i o n
● C u s t o m e r s u p p o r t
● C o m m u n i t y f o r u m
● T r u s t c e n t e r
● P a r t n e r s
O p e n S o u r c e
C O M M U N I T Y
G i t H u b S p o n s o r s F u n d o p e n s o u r c e d e v e l o p e r s
P R O G R A M S
● S e c u r i t y L a b
● M a i n t a i n e r C o m m u n i t y
● A c c e l e r a t o r
● A r c h i v e P r o g r a m
R E P O S I T O R I E S
● T o p i c s
● T r e n d i n g
● C o l l e c t i o n s
E n t e r p r i s e
E N T E R P R I S E S O L U T I O N S
E n t e r p r i s e p l a t f o r m A I - p o w e r e d d e v e l o p e r p l a t f o r m
A V A I L A B L E A D D - O N S
G i t H u b A d v a n c e d S e c u r i t y E n t e r p r i s e - g r a d e s e c u r i t y f e a t u r e s
C o p i l o t f o r B u s i n e s s E n t e r p r i s e - g r a d e A I f e a t u r e s
P r e m i u m S u p p o r t E n t e r p r i s e - g r a d e 2 4 / 7 s u p p o r t
● P r i c i n g
S e a r c h o r j u m p t o . . .
Clear
S e a r c h s y n t a x t i p s
P r o v i d e f e e d b a c k
Include my email address so I can be contacted
C a n c e l
S u b m i t f e e d b a c k
S a v e d s e a r c h e s
U s e s a v e d s e a r c h e s t o f i l t e r y o u r r e s u l t s m o r e q u i c k l y
Query
To see all available qualifiers, see our documentation .
C a n c e l
C r e a t e s a v e d s e a r c h
A p p e a r a n c e s e t t i n g s
Y o u s i g n e d i n w i t h a n o t h e r t a b o r w i n d o w . R e l o a d t o r e f r e s h y o u r s e s s i o n .
Y o u s i g n e d o u t i n a n o t h e r t a b o r w i n d o w . R e l o a d t o r e f r e s h y o u r s e s s i o n .
Y o u s w i t c h e d a c c o u n t s o n a n o t h e r t a b o r w i n d o w . R e l o a d t o r e f r e s h y o u r s e s s i o n .
D i s m i s s a l e r t
{ { m e s s a g e } }
H a s k e l l - T h i n g s
/
I m p l i c i t C A D
P u b l i c
U h o h !
T h e r e w a s a n e r r o r w h i l e l o a d i n g . P l e a s e r e l o a d t h i s p a g e .
●
N o t i f i c a t i o n s
Y o u m u s t b e s i g n e d i n t o c h a n g e n o t i f i c a t i o n s e t t i n g s
●
F o r k
1 4 7
S t a r
1 . 5 k
A m a t h - i n s p i r e d C A D p r o g r a m i n h a s k e l l . C S G , b e v e l s , a n d s h e l l s ; 2 D & 3 D g e o m e t r y ; 2 D g c o d e g e n e r a t i o n . . .
i m p l i c i t c a d . o r g /
L i c e n s e
A G P L - 3 . 0 l i c e n s e
1 . 5 k
s t a r s
1 4 7
f o r k s
B r a n c h e s
T a g s
A c t i v i t y
S t a r
N o t i f i c a t i o n s
Y o u m u s t b e s i g n e d i n t o c h a n g e n o t i f i c a t i o n s e t t i n g s
●
C o d e
●
I s s u e s
71
●
P u l l r e q u e s t s
5
●
A c t i o n s
●
P r o j e c t s
0
●
W i k i
●
S e c u r i t y
0
●
I n s i g h t s
A d d i t i o n a l n a v i g a t i o n o p t i o n s
●
C o d e
●
I s s u e s
●
P u l l r e q u e s t s
●
A c t i o n s
●
P r o j e c t s
●
W i k i
●
S e c u r i t y
●
I n s i g h t s
H a s k e l l - T h i n g s / I m p l i c i t C A D
m a s t e r
B r a n c h e s T a g s
G o t o f i l e
C o d e
O p e n m o r e a c t i o n s m e n u
F o l d e r s a n d f i l e s
R e p o s i t o r y f i l e s n a v i g a t i o n
● R E A D M E
● A G P L - 3 . 0 l i c e n s e
I m p l i c i t C A D : M a t h I n s p i r e d C A D
I n t r o d u c t i o n
I m p l i c i t C A D i s a p r o g r a m m a t i c C A D p r o g r a m , i m p l e m e n t e d i n H a s k e l l . U n l i k e t r a d i t i o n a l C A D p r o g r a m s , p r o g r a m m a t i c C A D p r o g r a m s u s e t e x t d e s c r i p t i o n s o f o b j e c t s , a s i n p r o g r a m m i n g . C o n c e p t s l i k e v a r i a b l e s , c o n t r o l s t r u c t u r e s a n d a b s t r a c t i o n a r e u s e d , j u s t a s i n p r o g r a m m i n g . T h i s p r o v i d e s a n u m b e r o f a d v a n t a g e s :
● O b j e c t s c a n b e a b s t r a c t e d a n d r e u s e d
● R e p e t i t i v e t a s k s c a n b e a u t o m a t e d
● O b j e c t s c a n b e d e s i g n e d p a r a m e t r i c a l l y
● T h e u s u a l t o o l s f o r s o f t w a r e d e v e l o p m e n t ( l i k e v e r s i o n c o n t r o l ) c a n b e u s e d
T h e t r a d i t i o n a l e x a m p l e o f p r o g r a m m a t i c C A D i s O p e n S C A D .
G e n e r a l l y , o b j e c t s i n p r o g r a m m a t i c C A D a r e b u i l t w i t h C o n s t r u c t i v e S o l i d G e o m e t r y o r C S G . U n i o n s , i n t e r s e c t i o n s a n d d i f f e r e n c e s o f s i m p l e r s h a p e s s l o w l y b u i l d t h e o b j e c t . I m p l i c i t C A D s u p p o r t s a l l t h i s a n d m u c h m o r e ! F o r e x a m p l e , i t p r o v i d e s r o u n d e d u n i o n s s o t h a t o n e c a n h a v e s m o o t h i n t e r f a c e s b e t w e e n o b j e c t s .
I t a l s o d i r e c t l y p r o v i d e s s o m e G C o d e g e n e r a t i o n , a n d h a s a p a r s e r f o r O p e n S C A D t o m a k e i t e a s i e r f o r p e o p l e t o t r a n s i t i o n / u s e .
I m p l i c i t C A D i s v e r y m u c h a w o r k i n p r o g r e s s . T h e a u t h o r c o n s i d e r s i t r e a d y f o r b e t a t e s t e r s a n d g r e a t l y a p p r e c i a t e s b u g r e p o r t s .
E x t O p e n S C A D E x a m p l e s
L e t ' s b e g i n w i t h O p e n S C A D e x a m p l e s , s i n c e t h e y ' r e l i k e l y a m o r e c o m f o r t a b l e f o r m a t t h a n H a s k e l l f o r m o s t r e a d e r s : )
I m p l i c i t C A D s u p p o r t s a m o d i f i e d v e r s i o n o f t h e O p e n S C A D l a n g u a g e , u s e d b y t h e p o p u l a r p r o g r a m m a t i c C A D t o o l o f t h e s a m e n a m e .
G e n e r a l l y , n o r m a l O p e n S C A D c o d e s h o u l d w o r k . F o r e x a m p l e , s a v e t h e f o l l o w i n g a s e x a m p l e 1 . s c a d ( o r g r a b i t o u t o f t h e E x a m p l e s / d i r e c t o r y s h i p p e d w i t h I m p l i c i t C A D ) .
// example1.scad -- The union of a square and a circle.
union () {
square ( [80 ,80 ]);
translate ( [80 ,80 ]) circle (30 );
}
R u n n i n g e x t o p e n s c a d e x a m p l e 1 . s c a d w i l l p r o d u c e e x a m p l e 1 . s v g , w h i c h w i l l l o o k l i k e :
Y o u c a n r e a d m o r e a b o u t s t a n d a r d o p e n s c a d f u n c t i o n a l i t y i n t h e O p e n S C A D U s e r M a n u a l .
H o w e v e r , t h e r e a r e a d d i t i o n a l I m p l i c i t C A D s p e c i f i c f e a t u r e s . F o r e x a m p l e a r o u n d e d u n i o n :
//example2.escad -- A rounded union of a square and a circle.
union (r = 14 ) {
square ([80 ,80 ]);
translate ([80 ,80 ]) circle (30 );
}
( F o r c o d e l i k e t h i s t h a t i s n o t b a c k w a r d s c o m p a t i b l e w i t h O p e n S C A D , i t i s r e c o m m e n d e d t h a t y o u s a v e i t a s a . e s c a d f i l e - - E x t e n d e d O p e n S C A D . )
L i k e o p e n s c a d , I m p l i c i t C A D s u p p o r t s e x t r u d i n g o b j e c t s .
// example3.escad -- the extruded product of the union of five circles.
linear_extrude (height = 40 , center = true){
union ( r = 8 ) {
circle (10 );
translate ([22 ,0 ]) circle (10 );
translate ([0 ,22 ]) circle (10 );
translate ([-22 ,0 ]) circle (10 );
translate ([0 ,-22 ]) circle (10 );
}
}
A n d w e a l l o w y o u t o t w i s t t h e m a s y o u e x t r u d e .
// example4.escad -- the twisted extruded product of the union of five circles.
linear_extrude (height = 40 , center = true, twist = 90 ){
union ( r = 8 ) {
circle (10 );
translate ([22 ,0 ]) circle (10 );
translate ([0 ,22 ]) circle (10 );
translate ([-22 ,0 ]) circle (10 );
translate ([0 ,-22 ]) circle (10 );
}
}
I n f a c t , w e ' v e e x t e n d e d t h i s t o a l l o w y o u t o t w i s t a t n o n - c o n s t a n t r a t e s a n d e v e n r e v e r s e d i r e c t i o n s . Y o u j u s t m a k e t w i s t a f u n c t i o n ! ( W e ' r e f o l l o w i n g t h e o p e n s c a d c o n v e n t i o n o f u s i n g d e g r e e s . . . )
// example5.escad -- the variably twisted extruded product of the union of 5 circles.
linear_extrude (height = 40 , center = true, twist (h ) = 35 * cos (h * 2 * pi /60 )) {
union ( r = 8 ) {
circle (10 );
translate ([22 ,0 ]) circle (10 );
translate ([0 ,22 ]) circle (10 );
translate ([-22 ,0 ]) circle (10 );
translate ([0 ,-22 ]) circle (10 );
}
}
W e a l s o a l l o w y o u t o d o r o u n d e d e x t r u s i o n s . S e e , w e h e a r d y o u l i k e r o u n d i n g , s o w e s e t t h i s u p s o y o u c a n r o u n d e d e x t r u d e y o u r r o u n d e d u n i o n . . .
// example6.escad -- A rounded extrusion of the rounded union of 5 circles.
linear_extrude (height = 40 , center = true, r = 5 ){
union ( r = 8 ) {
circle (10 );
translate ([22 ,0 ]) circle (10 );
translate ([0 ,22 ]) circle (10 );
translate ([-22 ,0 ]) circle (10 );
translate ([0 ,-22 ]) circle (10 );
}
}
T h i s i s f u l l y c o m p a t i b l e w i t h t w i s t i n g , o f c o u r s e !
// example7.escad -- A twisted rounded extrusion of the rounded union of 5 circles.
linear_extrude (height = 40 , center = true, twist = 90 , r = 5 ){
union ( r = 8 ) {
circle (10 );
translate ([22 ,0 ]) circle (10 );
translate ([0 ,22 ]) circle (10 );
translate ([-22 ,0 ]) circle (10 );
translate ([0 ,-22 ]) circle (10 );
}
}
I m p l i c i t C A D a l s o p r o v i d e s f u l l p r o g r a m m a t i c f u n c t i o n a l i t y , l i k e v a r i a b l e a s s i g n m e n t i n l o o p s . F o r e x a m p l e , t h e t r i v i a l p r o g r a m :
// Example8.escad -- variable assignment in loops.
a = 5 ;
for (c = [1 , 2 , 3 ]) {
echo (c );
a = a * c ;
echo (a );
}
H a s t h e o u t p u t :
1.0
5.0
2.0
10.0
3.0
30.0
Nothing to render
A s a f u n c t i o n a l p r o g r a m m e r , I c o u l d n ' t r e s i s t a d d i n g s o m e o t h e r n i c e t i e s t o t h e l a n g u a g e . F o r e x a m p l e , f u n c t i o n c u r r y i n g :
// Example9.escad -- function currying.
f = max (4 );
echo (f (5 ));
echo (max (4 ,5 ));
A n d s o m e h i g h e r o r d e r f u n c t i o n s , l i k e m y f r i e n d m a p :
// Example10.escad -- map!.
echo (map (cos , [0 , pi /2 , pi ]));
H a s k e l l E x a m p l e s
E v e r y t h i n g y o u s a w a b o v e c a n b e d o n e w i t h t h e H a s k e l l A P I . F o r e x a m p l e , a s i m p l e 2 D e x a m p l e , t h e s a m e a s o u r f i r s t E x t O p e n S C A D o n e :
-- Example 11 - the union of a square and a circle.
import Graphics.Implicit
out = union [
squareR 0 True (80 , 80 )
, translate (40 , 40 ) (circle 30 )
]
main = writeSVG 2 " test.svg" out
A r o u n d e d u n i o n :
-- Example 12 - the rounded union of a square and a circle.
import Graphics.Implicit
out = unionR 14 [
squareR 0 True (80 , 80 )
, translate (80 , 80 ) (circle 30 )
]
main = writeSVG 2 " test.svg" out
A s i m p l e 3 D e x a m p l e :
-- Example 13 - the union of a cube and a sphere.
import Graphics.Implicit
out = union [
cubeR 0 False (20 , 20 , 20 )
, translate (20 , 20 , 20 ) (sphere 15 )
]
main = writeSTL 1 " test.stl" out
Y o u c a n d o a w h o l e l o t m o r e !
T r y I m p l i c i t C A D !
(一) I n s t a l l G H C a n d c a b a l .
● D e b a i n / U b u n t u : a p t - g e t i n s t a l l g h c c a b a l - i n s t a l l z l i b 1 g - d e v
● A r c h l i n u x : p a c m a n - S g h c c a b a l - i n s t a l l
● R e d H a t / F e d o r a : y u m i n s t a l l g h c c a b a l - i n s t a l l
● M a c O S X :
● H o m e b r e w : b r e w i n s t a l l g h c c a b a l - i n s t a l l
● I n s t a l l G H C u p f o l l o w i n g t h e s e i n s t a l l i n s t r u c t i o n s
● W i n d o w s : F o l l o w s t h e s e i n s t a l l i n s t r u c t i o n s .
● O t h e r u n i c e s : I f y o u r p a c k a g e m a n a g e r d o e s n o t i n c l u d e g h c a n d c a b a l y o u s h o u l d i n s t a l l G H C u p .
(二) Y o u n o w h a v e t w o o p t i o n s f o r i n s t a l l a t i o n :
● L a t e s t r e l e a s e :
● U s e c a b a l t o i n s t a l l I m p l i c i t C A D : c a b a l u p d a t e & & c a b a l i n s t a l l i m p l i c i t
● D e v e l o p m e n t v e r s i o n :
● I n i t i a l i z e y o u r h a s k e l l e n v i r o n m e n t : c a b a l u p d a t e
● G i t c l o n e t h i s r e p o : g i t c l o n e h t t p s : / / g i t h u b . c o m / H a s k e l l - T h i n g s / I m p l i c i t C A D . g i t
● c d i n : c d I m p l i c i t C A D /
● i n s t a l l t h e d e p e n d e n c i e s : c a b a l i n s t a l l - - o n l y - d e p e n d e n c i e s
● T h e p r e v i o u s s t e p m a y f a i l , b u t i t s h o u l d t e l l y o u w h a t ' s m i s s i n g .
● T r a c k d o w n t h e r e l e v a n t p a c k a g e i n y o u r p a c k a g e m a n a g e r . Y o u m a y n e e d t o i n s t a l l t h e - d e v p a c k a g e .
● F i n a l l y , t o b u i l d a n d i n s t a l l i m p l i c i t c a d : c a b a l c o n f i g u r e & & c a b a l i n s t a l l
(三) T r y i t !
● e x t o p e n s c a d t e s t :
● M a k e a t e s t f i l e : e c h o " c i r c l e ( 30 ) ; " > t e s t . e s c a d
● R u n e x t o p e n c a d : e x t o p e n s c a d t e s t . e s c a d
● A l t e r n a t i v e l y , ~ / . c a b a l / b i n / e x t o p e n s c a d t e s t . e s c a d - - s e e b e l l o w .
● H a s k e l l I m p l i c i t C A D t e s t :
● S t a r t g h c i : g h c i
● L o a d I m p l i c i t C A D : i m p o r t G r a p h i c s . I m p l i c i t
● T r y i t ! w r i t e S V G 1 " t e s t . s v g " ( c i r c l e 3 0 )
(四) K n o w n i s s u e s :
● e x t o p e n s c a d t e s t r e s u l t s i n b a s h : e x t o p e n s c a d : c o m m a n d n o t f o u n d ( o r s i m i l a r f o r y o u r s h e l l )
● T h i s p r o b a b l y m e a n s ~ / . c a b a l / b i n / i s n o t i n y o u r $ P A T H v a r i a b l e .
T r y u s i n g ~ / . c a b a l / b i n / e x t o p e n s c a d a s y o u r c o m m a n d i n s t e a d .
● H a s k e l l t e s t r e s u l t s i n m o d u l e i s n o t l o a d e d : ' G r a p h i c s . I m p l i c i t ' ( . / G r a p h i c s / I m p l i c i t . h s )
● T h i s i s m o s t l i k e l y a p r o b l e m w i t h y o u r L i n u x d i s t r o a n d c a b a l n o t p l a y i n g n i c e .
G H C i s n o t c o n f i g u r e d t o s e e t h e I m p l i c i t C A D l i b r a r i e s . Y o u c a n c o n f i r m t h i s b y
t r y i n g t h e t e s t i n ~ / . c a b a l / l i b / . I f t h a t w o r k s , y o u s h o u l d b e a b l e t o u s e g h c
a n y w h e r e w i t h t h e - L d i r or - l l i b o p t i o n s . A l t e r n a t i v e l y , s o m e p e o p l e h a v e
p e r m a n e n t l y f i x e d t h i s b y d o i n g t h e c a b a l i n s t a l l a s r o o t .
D o c u m e n t a t i o n
D o c u m e n t a t i o n c a n b e g e n e r a t e d f r o m t h e s o u r c e c o d e o f I m p l i c i t C A D b y H a d d o c k b y r u n n i n g c a b a l h a d d o c k .
R e l e a s e s o f I m p l i c i t C A D a r e u p l o a d e d t o H a c k a g e D B w h i c h , i n a d d i t i o n t o m a k i n g t h e m a v a i a l a b l e t h r o u g h c a b a l i n s t a l l , p u t s t h e g e n e r a t e d d o c u m e n t a t i o n o n t h e I n t e r n e t . S o y o u c a n r e a d t h e d o c u m e n t a t i o n f o r t h e m o s t r e c e n t r e l e a s e o f I m p l i c i t C A D , 0 . 4 . 1 . 0 , o n H a c k a g e D B .
I n I m p l i c i t C A D , w e c o n s i d e r o b j e c t s a s f u n c t i o n s o f ` o u t w a r d n e s s ' . T h e b o u n d a r y i s 0 , n e g a t i v e i s t h e i n t e r i o r a n d p o s i t i v e t h e e x t e r i o r . T h e m a g n i t u d e i s h o w f a r o u t o r i n . A d e s c r i p t i o n o f t h e m a t h e m a t i c a l i d e a s u n d e r p i n n i n g I m p l i c i t C A D a r e i n a b l o g p o s t o n c o l a h ' s b l o g .
R e l a t e d p r o j e c t s
● E x p l i c i t C A D
● H S l i c e
● i m p l i c i t p i p e
S t a t u s
I m p l i c i t C A D i s v e r y m u c h a w o r k i n p r o g r e s s .
W h a t w o r k s ( J a n u a r y 2 6 t h , 2 0 2 0 - - r e g r e s s i o n s a r e p o s s i b l e i f n o t p r o b a b l e ) :
● C S G , b e v e l l e d C S G , s h e l l s .
● 2 D o u t p u t ( s v g , p n g , d x f ) .
● 3 D o u t p u t ( s t l , p n g , o b j ) .
● g c o d e g e n e r a t i o n f o r 2 D t o h a c k l a b l a s e r c u t t e r . N o t c o n f i g u r a b l e .
W h a t s t i l l n e e d s t o b e d o n e :
● g c o d e g e n e r a t i o n f o r 3 D p r i n t e r s , g c o d e g e n e r a t o r c o n f i g . - - n o w a s e p e r a t e p r o g r a m , H S l i c e !
● M u l t i - m a t e r i a l / c o l o r s u p p o r t .
● H u l l s u p p o r t .
● M i n k o w s k i s u m s u p p o r t .
A n d a w i s h l i s t o f t h i n g s t o b e d o n e a s w e g o :
● M o r e o p t i m i s a t i o n .
● L e s s b u g s .
● M o r e c o v e r a g e o f t h e o p e n s c a d l a n g u a g e .
● P u l l t h e h a c k l a b l a s e r c u t t e r s u p p o r t , a n d p l a c e i t i n H S l i c e .
A b o u t
A m a t h - i n s p i r e d C A D p r o g r a m i n h a s k e l l . C S G , b e v e l s , a n d s h e l l s ; 2 D & 3 D g e o m e t r y ; 2 D g c o d e g e n e r a t i o n . . .
i m p l i c i t c a d . o r g /
T o p i c s
h a s k e l l
c s g
o p e n s c a d
3 d - p r i n t i n g
s d f s
R e s o u r c e s
R e a d m e
L i c e n s e
A G P L - 3 . 0 l i c e n s e
U h o h !
T h e r e w a s a n e r r o r w h i l e l o a d i n g . P l e a s e r e l o a d t h i s p a g e .
A c t i v i t y
C u s t o m p r o p e r t i e s
S t a r s
1 . 5 k
s t a r s
W a t c h e r s
50
w a t c h i n g
F o r k s
1 4 7
f o r k s
R e p o r t r e p o s i t o r y
R e l e a s e 0 . 4 . 1 . 0
L a t e s t
D e c 1 8 , 2 0 2 3
+ 3 r e l e a s e s
S p o n s o r t h i s p r o j e c t
S p o n s o r
U h o h !
T h e r e w a s a n e r r o r w h i l e l o a d i n g . P l e a s e r e l o a d t h i s p a g e .
L e a r n m o r e a b o u t G i t H u b S p o n s o r s
U h o h !
T h e r e w a s a n e r r o r w h i l e l o a d i n g . P l e a s e r e l o a d t h i s p a g e .
U h o h !
T h e r e w a s a n e r r o r w h i l e l o a d i n g . P l e a s e r e l o a d t h i s p a g e .
+ 2 8 c o n t r i b u t o r s
L a n g u a g e s
●
J a v a S c r i p t
5 7 . 9 %
●
H a s k e l l
4 1 . 0 %
●
O t h e r
1 . 1 %
F o o t e r
© 2 0 2 6 G i t H u b , I n c .
●
T e r m s
●
P r i v a c y
●
S e c u r i t y
●
S t a t u s
●
C o m m u n i t y
●
D o c s
●
C o n t a c t
●
M a n a g e c o o k i e s
●
D o n o t s h a r e m y p e r s o n a l i n f o r m a t i o n
Y o u c a n ’ t p e r f o r m t h a t a c t i o n a t t h i s t i m e .