All Projects → haskell-foundation → Foundation

haskell-foundation / Foundation

Licence: other
Empire strikes back

Programming Languages

haskell
3896 projects

Projects that are alternatives of or similar to Foundation

curry
curry is a framework built to enhance and compliment Foundation and UIKit.
Stars: ✭ 47 (-89.07%)
Mutual labels:  foundation
foundation
Interactions with the CDF Staff and Board
Stars: ✭ 20 (-95.35%)
Mutual labels:  foundation
Foundationpress
FoundationPress is a WordPress starter theme based on Foundation 6 by Zurb
Stars: ✭ 2,776 (+545.58%)
Mutual labels:  foundation
Objective-CPP
C++ compatibility library for Objective-C - Objective-CPP is a library intended to ease software development using Objective-C++. It declares categories on Objective-C classes, to work with the STL C++ types, such as std::string, std::vector, etc.
Stars: ✭ 37 (-91.4%)
Mutual labels:  foundation
Extras
Just some extras..
Stars: ✭ 17 (-96.05%)
Mutual labels:  foundation
NeoMarkdigXaml
Markdig Xaml/Wpf Renderer
Stars: ✭ 18 (-95.81%)
Mutual labels:  foundation
Neslib
Delphi utilities shared with other Neslib repositories
Stars: ✭ 33 (-92.33%)
Mutual labels:  foundation
Wtrequestcenter
WTKit is my Code accumulation
Stars: ✭ 293 (-31.86%)
Mutual labels:  foundation
k8s-api
Kubernetes client, data driven
Stars: ✭ 87 (-79.77%)
Mutual labels:  foundation
python-paginate
Pagination support for python web frameworks (study from will_paginate).
Stars: ✭ 17 (-96.05%)
Mutual labels:  foundation
Sukari
🍯 Sweet Syntactical Sugar For Swift
Stars: ✭ 30 (-93.02%)
Mutual labels:  foundation
FoundationNavWalker
A simple extension of wp_nav_menu to support Foundation 5's offcanvas nav
Stars: ✭ 17 (-96.05%)
Mutual labels:  foundation
governance
TODO Group Governance
Stars: ✭ 69 (-83.95%)
Mutual labels:  foundation
foundation
This is a mirror from https://github.com/laravel/framework/tree/9.x/src/Illuminate/Foundation
Stars: ✭ 26 (-93.95%)
Mutual labels:  foundation
Pagy
🏆 The Best Pagination Ruby Gem 🥇
Stars: ✭ 3,340 (+676.74%)
Mutual labels:  foundation
tb-grid
tb-grid is a super simple and lightweight 12 column responsive grid system utilizing css grid.
Stars: ✭ 19 (-95.58%)
Mutual labels:  foundation
core
🔥 Antares Core Implemenation. Most important project layer, this is the heart for your app. ACL, notifiter, console, geoip, areas, utils and many more...
Stars: ✭ 24 (-94.42%)
Mutual labels:  foundation
Material Foundation
Material Design version of Foudation for Sites by Zurb
Stars: ✭ 361 (-16.05%)
Mutual labels:  foundation
Framework Codeidea
System file classification
Stars: ✭ 289 (-32.79%)
Mutual labels:  foundation
Rearrange
Collection of utilities for interacting with NSRange and NSTextRange
Stars: ✭ 28 (-93.49%)
Mutual labels:  foundation

Foundation

Continuous integration Doc Stackage version Hackage version BSD3 Haskell Coverage Status

Documentation:

Discuss:

Goals

  • provide a base like set of modules that provide a consistent set of features and bugfixes across multiple versions of GHC (unlike base).
  • provide a better and more efficient prelude than base's prelude.
  • be self-sufficient: no external dependencies apart from base (or ghc packages).
  • provide better data-types: packed unicode string by default, arrays.
  • Better numerical classes that better represent mathematical things (No more all-in-one Num).

Support

See Haskell packages guidelines

Usage

How to use with the normal Prelude

Add the foundation package in your cabal file, and it's recommended to import Foundation qualified if you're planning to use with the normal Prelude:

For example:

import qualified Foundation as F

It's also recommended if you're going to deal with packages using text, bytestring, vector.. to use the foundation-edge package.

How to use fully without Prelude

Disable the built-in prelude at the top of your file:

{-# LANGUAGE NoImplicitPrelude #-}

Or directly in your project cabal file:

Default-Extensions: NoImplicitPrelude

Then in your modules:

import Foundation

Advanced settings

Please check out the chapter Advanced Usage Options in the documentation.

How to contribute

Contribution guide can be found here.

Profiling

If you want to see the core (simpl step) or the assembly (asm step), then you can build with

stack build --ghc-options -ddump-simpl --ghc-options -ddump-asm

Note that it doesn't actually will create the necessary extra files if the modules doesn't need building.

you can then find your build by-products in:

.stack-work/dist/<architecture>/Cabal-<CabalVersion>/build/

Each modules that get compiled will create an equivalent file in the build directory:

  • ModuleName.dump-simpl
  • ModuleName.dump-asm

For profiling individual programs, the following command is useful:

stack ghc -- -O --make X.hs -prof -auto-all -caf-all -fforce-recomp

Benchmarking

To get the list of benchmark:

stack bench --benchmark-arguments -l

To compare against other libraries, you need to set the bench-all flag

stack bench --flag foundation:bench-all --benchmark-arguments -l

To run a specific or set of benchmarks :

stack bench --flag foundation:bench-all --benchmark-arguments 'types/String/SplitAt/mascii-10/Text'
stack bench --flag foundation:bench-all --benchmark-arguments '-m prefix types/String/SplitAt'
stack bench --flag foundation:bench-all --benchmark-arguments '-m glob types/String/SplitAt'

To register a set of benchmarks:

stack bench --flag foundation:bench-all --benchmark-arguments "--csv $(git describe).csv"

Design

Foundation started on the simple idea of trying to put everything I need in one simple and consistent package. The amazing haskell ecosystem is extremely fragmented and maintained by different people with different goals, free time, and style. The overall scare of not trying to change anything relatively central (base, bytestring, text, vector, ...) for a promise of stability has pushed many people to work on their own thing, leading to unnecessary work duplication and further fragmentation.

Foundation uses and abuses type families.

Code Organisation

Every foundation modules start by Foundation.

  • Foundation is the prelude replacement module.
  • Basement.Compat contains only compatibilty and re-export from ghc/ghc-prim/base.
  • Foundation.Primitive is where all the lowlevel magic happens:
    • Important types that underpins many others part
    • Pervasive features
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].