Exemples
No gods, no masters, juste du code: si ça compile c'est un exemple, sinon c'est un bug avec de l'attitude.
Bases (basics/)
Exemples fondamentaux :
01_born_to_segfault.cat- Premier programme, debug et affichage02_loops.cat- Boucles for et while03_statement_separators.cat- Newlines, semicolons et séparateurs mixtes04_blocks_and_expressions.cat- Blocs comme expressions, court-circuit logique05_fstrings.cat- F-strings: interpolation, format specs, conversion et debug06_assignment_syntax.cat- Affectation simple, chaînée, unpacking, attributs, index07_literals_and_variadic.cat- Littéraux list/dict, fonctions variadiques08_data_structures.cat- Range, accumulation, filtrage, statistiques09_factorielle.cat- Calcul de factorielle avec match10_fibonacci.cat- Nombres de Fibonacci11_tri_bulles.cat- Tri à bulles12_calculatrice.cat- Calculatrice simple avec match13_fizzbuzz.cat- FizzBuzz14_decimals.cat- Type Decimal exact (suffixe d/D, arithmétique base-10)15_complex.cat- Nombres complexes (suffixe j/J)16_membership.cat- Opérateursin/not in17_identity.cat- Opérateursis/is not18_null_coalesce.cat- Opérateur nil-coalescing (??)19_type_introspection.cat- Introspection de type avectypeof()
Fonctions (functions/)
Fonctions, lambdas et closures :
01_functions.cat- Définition de fonctions, paramètres, defaults02_lambdas.cat- Fonctions anonymes, lambdas inline03_closures_and_higher_order.cat- Closures, fonctions de fonctions, composition04_tail_recursion.cat- Récursion terminale et transformation automatique en boucles05_fold_and_reduce.cat- Fold et reduce : agrégation avec valeur initiale
Pattern matching (pattern-matching/)
Matching et destructuration :
01_pattern_matching.cat- match/case, patterns littéraux, variables, guards, patterns OR
Flux de Contrôle (control-flow/)
Structures de contrôle avancées :
01_break_example.cat- Sortie anticipée de boucle02_continue_example.cat- Passage à l'itération suivante03_break_continue_combined.cat- Combinaison des deux
Avancé (advanced/)
Fonctionnalités avancées :
01_pragma_features.cat- Pragmas et directives02_structs.cat- Structures nommées (déclaration, instanciation, mutation, imbrication)03_traits.cat- Traits, composition et résolution de conflits04_operator_overloading.cat- Surcharge d'opérateurs05_nd_recursion.cat- Récursion N-dimensionnelle06_binary_search.cat- Algorithme de recherche binaire07_knapsack.cat- Problème du sac à dos (brute force + ND-mémoïsé)08_advanced_techniques.cat- Techniques avancées combinées09_turing_completeness.cat- Démonstration de Turing-complétude10_enums.cat- Types énumérés, pattern matching et machine à états
Broadcasting (broadcast/)
Opérations vectorielles sur collections :
01_scalar_broadcasting.cat- Broadcasting sur scalaire02_basic_broadcasting.cat- SyntaxeA.[op M], bases03_math_operations.cat- Opérations mathématiques vectorielles04_comparisons.cat- Comparaisons et filtrage05_boolean_logic.cat- Logique booléenne distribuée06_nested_structures.cat- Broadcasting sur structures imbriquées07_cas_illustratifs.cat- Cas d'usage illustratifsbench_broadcast.py- Mesures de performance
Chargement de Modules (module-loading/)
Intégration avec Python :
index.md- Mécanismes de base01_demo.cat- Mode namespace par défaut02_demo_with_as.cat- Namespace personnaliséhost_module_example.py- Module Python exemple03_app_script.cat- Script utilisant l'API05_simple_extension.py- Extension simple06_custom_functions.py- Fonctions personnalisées07_app_api.py- API d'application simulée08_aesgcm.cat- AES-GCM avec propagation d'erreur Python09_relative_import.cat- Import relatif viacaller_dir10_wild_import.cat- Import global (injection dans globals)11_selective_import.cat- Import sélectif de noms spécifiques12_io_module.cat- Module IO builtin13_relative_import_dots.cat- Import relatif avec dots (style Python)
Intégration DSL (embedding/)
Catnip comme moteur DSL embarqué dans une application Python :
01_dataframe_dsl.py- DSL pour DataFrames pandas02_config_dsl.py- Validation de configuration03_etl_pipeline.py- Pipeline ETL déclaratif04_rule_engine.py- Moteur de règles métier05_report_builder.py- Génération de rapports06_workflow_dsl.py- Orchestration de workflows07_flask_sandbox.py- Sandbox Flask sécurisé08_jupyter_integration.py- Magic commands Jupyter09_streamlit_app.py- Dashboard Streamlit interactif10_pickle_serialization.py- Sérialisation pickle (AST, Scope, lambdas, closures)
Standalone (run/)
Scripts Catnip exécutables en ligne de commande :
01_calculate.cat- Calculatrice et formules02_filter_data.cat- Filtrage et transformations03_transform_csv.cat- Transformation de données tabulaires04_config_validator.cat- Validation de configuration05_data_report.cat- Rapport de données
Graphe de contrôle (cfg/)
Analyse et optimisation du flux de contrôle :
01_cfg_basic.md- Construction de CFG, blocs basiques, arêtes02_cfg_analysis.md- Dominance, détection de boucles03_cfg_optimization.md- Optimisations (dead code, fusion, branches)04_cfg_reconstruction.md- Reconstruction de code structuré depuis CFG
Outils (tools/)
Utilitaires de développement :
extract_grammar_demo.py- Extraction de la grammaire Tree-sitterjson_ir_analysis.py- Analyse programmatique de l'IR via sérialisation JSON
Performance (performance/)
Benchmarks et profiling :
vm_optimizations_benchmark.py- Hot paths VM vs Python natif (range, tail recursion, BigInt)pipeline_comparison_benchmark.py- Comparaison des niveaux d'optimisation (0-3)tco_vs_iteration_benchmark.py- Boucle impérative vs récursion terminale (TCO on/off)profiling_example.py- Profiling cProfile d'un workload représentatif
Exécuter les Exemples
# Exemple simple
catnip docs/examples/basics/01_born_to_segfault.cat
# Avec module Python (utiliser import() dans le script pour les fichiers locaux)
catnip docs/examples/module-loading/02_demo_with_as.cat
# Mode verbeux
catnip -v docs/examples/functions/01_functions.cat
# REPL pour expérimenter
catnip