Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
83 changes: 23 additions & 60 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -1,63 +1,26 @@
###############################################################################
# Set default behavior to automatically normalize line endings.
###############################################################################
# Auto detect text files
* text=auto

###############################################################################
# Set default behavior for command prompt diff.
#
# This is need for earlier builds of msysgit that does not have it on by
# default for csharp files.
# Note: This is only used by command line
###############################################################################
#*.cs diff=csharp
# Custom for Visual Studio
*.cs diff=csharp text=auto eol=lf
*.vb diff=csharp text=auto eol=lf
*.fs diff=csharp text=auto eol=lf
*.fsi diff=csharp text=auto eol=lf
*.fsx diff=csharp text=auto eol=lf
*.sln text eol=crlf merge=union
*.csproj merge=union
*.vbproj merge=union
*.fsproj merge=union
*.dbproj merge=union

###############################################################################
# Set the merge driver for project and solution files
#
# Merging from the command prompt will add diff markers to the files if there
# are conflicts (Merging from VS is not affected by the settings below, in VS
# the diff markers are never inserted). Diff markers may cause the following
# file extensions to fail to load in VS. An alternative would be to treat
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
#*.sln merge=binary
#*.csproj merge=binary
#*.vbproj merge=binary
#*.vcxproj merge=binary
#*.vcproj merge=binary
#*.dbproj merge=binary
#*.fsproj merge=binary
#*.lsproj merge=binary
#*.wixproj merge=binary
#*.modelproj merge=binary
#*.sqlproj merge=binary
#*.wwaproj merge=binary

###############################################################################
# behavior for image files
#
# image files are treated as binary by default.
###############################################################################
#*.jpg binary
#*.png binary
#*.gif binary

###############################################################################
# diff behavior for common document formats
#
# Convert binary document formats to text before diffing them. This feature
# is only available from the command line. Turn it on by uncommenting the
# entries below.
###############################################################################
#*.doc diff=astextplain
#*.DOC diff=astextplain
#*.docx diff=astextplain
#*.DOCX diff=astextplain
#*.dot diff=astextplain
#*.DOT diff=astextplain
#*.pdf diff=astextplain
#*.PDF diff=astextplain
#*.rtf diff=astextplain
#*.RTF diff=astextplain
# Standard to msysgit
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
30 changes: 30 additions & 0 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
### Description

Please provide a succinct description of your issue.

### Repro steps

Please provide the steps required to reproduce the problem

1. Step A

2. Step B

### Expected behavior

Please provide a description of the behavior you expect.

### Actual behavior

Please provide a description of the actual behavior you observe.

### Known workarounds

Please provide a description of any known workarounds.

### Related information

* Operating system
* Branch
* .NET Runtime, CoreCLR or Mono Version
* Performance information, links to performance testing scripts
53 changes: 44 additions & 9 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,11 @@
*.user
*.sln.docstates

# Xamarin Studio / monodevelop user-specific
*.userprefs
*.dll.mdb
*.exe.mdb

# Build results

[Dd]ebug/
Expand All @@ -15,12 +20,6 @@ build/
[Bb]in/
[Oo]bj/

# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
!packages/*/build/

#NuGet
packages/

# MSTest test Results
[Tt]est[Rr]esult*/
[Bb]uild[Ll]og.*
Expand Down Expand Up @@ -62,6 +61,9 @@ ipch/
*.vsp
*.vspx

# Other Visual Studio data
.vs/

# Guidance Automation Toolkit
*.gpState

Expand Down Expand Up @@ -98,9 +100,8 @@ publish/
# Publish Web Output
*.Publish.xml

# NuGet Packages Directory
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
#packages/
# Enable nuget.exe in the .nuget folder (though normally executables are not tracked)
!.nuget/NuGet.exe

# Windows Azure Build Output
csx
Expand All @@ -109,6 +110,9 @@ csx
# Windows Store app package directory
AppPackages/

# VSCode
.vscode/

# Others
sql/
*.Cache
Expand Down Expand Up @@ -157,3 +161,34 @@ $RECYCLE.BIN/

# Mac desktop service store files
.DS_Store

# ===================================================
# Exclude F# project specific directories and files
# ===================================================

# NuGet Packages Directory
packages/

# Generated documentation folder
docs/output/

# Temp folder used for publishing docs
temp/

# Test results produced by build
TestResults.xml

# Nuget outputs
nuget/*.nupkg
release.cmd
release.sh
localpackages/
paket-files
*.orig
.paket/paket.exe
docs/content/license.md
docs/content/release-notes.md
.fake
docs/tools/FSharp.Formatting.svclog
AssemblyInfo.fs

Binary file added .paket/paket.bootstrapper.exe
Binary file not shown.
36 changes: 36 additions & 0 deletions .paket/paket.targets
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Enable the restore command to run before builds -->
<RestorePackages Condition=" '$(RestorePackages)' == '' ">true</RestorePackages>
<!-- Download Paket.exe if it does not already exist -->
<DownloadPaket Condition=" '$(DownloadPaket)' == '' ">true</DownloadPaket>
<PaketToolsPath>$(MSBuildThisFileDirectory)</PaketToolsPath>
<PaketRootPath>$(MSBuildThisFileDirectory)..\</PaketRootPath>
</PropertyGroup>
<PropertyGroup>
<!-- Paket command -->
<PaketExePath Condition=" '$(PaketExePath)' == '' ">$(PaketToolsPath)paket.exe</PaketExePath>
<PaketBootStrapperExePath Condition=" '$(PaketBootStrapperExePath)' == '' ">$(PaketToolsPath)paket.bootstrapper.exe</PaketBootStrapperExePath>
<PaketCommand Condition=" '$(OS)' == 'Windows_NT'">"$(PaketExePath)"</PaketCommand>
<PaketCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 "$(PaketExePath)"</PaketCommand>
<PaketBootStrapperCommand Condition=" '$(OS)' == 'Windows_NT'">"$(PaketBootStrapperExePath)"</PaketBootStrapperCommand>
<PaketBootStrapperCommand Condition=" '$(OS)' != 'Windows_NT' ">mono --runtime=v4.0.30319 $(PaketBootStrapperExePath)</PaketBootStrapperCommand>
<!-- Commands -->
<RestoreCommand>$(PaketCommand) restore</RestoreCommand>
<DownloadPaketCommand>$(PaketBootStrapperCommand)</DownloadPaketCommand>
<!-- We need to ensure packages are restored prior to assembly resolve -->
<BuildDependsOn Condition="$(RestorePackages) == 'true'">RestorePackages; $(BuildDependsOn);</BuildDependsOn>
</PropertyGroup>
<Target Name="CheckPrerequisites">
<!-- Raise an error if we're unable to locate paket.exe -->
<Error Condition="'$(DownloadPaket)' != 'true' AND !Exists('$(PaketExePath)')" Text="Unable to locate '$(PaketExePath)'" />
<MsBuild Targets="DownloadPaket" Projects="$(MSBuildThisFileFullPath)" Properties="Configuration=NOT_IMPORTANT;DownloadPaket=$(DownloadPaket)" />
</Target>
<Target Name="DownloadPaket">
<Exec Command="$(DownloadPaketCommand)" Condition=" '$(DownloadPaket)' == 'true' AND !Exists('$(PaketExePath)')" />
</Target>
<Target Name="RestorePackages" DependsOnTargets="CheckPrerequisites">
<Exec Command="$(RestoreCommand)" WorkingDirectory="$(PaketRootPath)" />
</Target>
</Project>
9 changes: 9 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
language: csharp

sudo: false # use the new container-based Travis infrastructure

before_install:
- chmod +x build.sh

script:
- ./build.sh All
59 changes: 43 additions & 16 deletions Higher.sln
Original file line number Diff line number Diff line change
@@ -1,33 +1,60 @@


Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.21005.1
MinimumVisualStudioVersion = 10.0.40219.1
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Higher.Core", "src\Higher.Core\Higher.Core.fsproj", "{C979A279-D345-469C-84B9-DACCFDE18FFD}"
# Visual Studio 2012
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = ".paket", ".paket", "{63297B98-5CED-492C-A5B7-A5B4F73CF142}"
ProjectSection(SolutionItems) = preProject
paket.dependencies = paket.dependencies
paket.lock = paket.lock
EndProjectSection
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Higher.Tests", "tests\Higher.Tests\Higher.Tests.fsproj", "{79CEA165-5660-4635-9854-FA3433E8CA86}"
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "docs", "docs", "{A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{BF71DC5C-2815-4B55-A3F2-4636DD267EB0}"
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Higher", "src\Higher\Higher.fsproj", "{A76FEEB6-CF93-465D-8F57-D729C1FFFE76}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "project", "project", "{BF60BC93-E09B-4E5F-9D85-95A519479D54}"
ProjectSection(SolutionItems) = preProject
build.fsx = build.fsx
README.md = README.md
RELEASE_NOTES.md = RELEASE_NOTES.md
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tools", "tools", "{83F16175-43B1-4C90-A1EE-8E351C33435D}"
ProjectSection(SolutionItems) = preProject
docs\tools\generate.fsx = docs\tools\generate.fsx
docs\tools\templates\template.cshtml = docs\tools\templates\template.cshtml
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "content", "content", "{8E6D5255-776D-4B61-85F9-73C37AA1FB9A}"
ProjectSection(SolutionItems) = preProject
docs\content\index.fsx = docs\content\index.fsx
docs\content\tutorial.fsx = docs\content\tutorial.fsx
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{ED8079DD-2B06-4030-9F0F-DC548F98E1C4}"
EndProject
Project("{F2A71F9B-5D33-465A-A702-920D77279786}") = "Higher.Tests", "tests\Higher.Tests\Higher.Tests.fsproj", "{5BFF3686-D94A-438B-84EE-6390FA1E82EB}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{C979A279-D345-469C-84B9-DACCFDE18FFD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C979A279-D345-469C-84B9-DACCFDE18FFD}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C979A279-D345-469C-84B9-DACCFDE18FFD}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C979A279-D345-469C-84B9-DACCFDE18FFD}.Release|Any CPU.Build.0 = Release|Any CPU
{79CEA165-5660-4635-9854-FA3433E8CA86}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{79CEA165-5660-4635-9854-FA3433E8CA86}.Debug|Any CPU.Build.0 = Debug|Any CPU
{79CEA165-5660-4635-9854-FA3433E8CA86}.Release|Any CPU.ActiveCfg = Release|Any CPU
{79CEA165-5660-4635-9854-FA3433E8CA86}.Release|Any CPU.Build.0 = Release|Any CPU
{A76FEEB6-CF93-465D-8F57-D729C1FFFE76}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A76FEEB6-CF93-465D-8F57-D729C1FFFE76}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A76FEEB6-CF93-465D-8F57-D729C1FFFE76}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A76FEEB6-CF93-465D-8F57-D729C1FFFE76}.Release|Any CPU.Build.0 = Release|Any CPU
{5BFF3686-D94A-438B-84EE-6390FA1E82EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BFF3686-D94A-438B-84EE-6390FA1E82EB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5BFF3686-D94A-438B-84EE-6390FA1E82EB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BFF3686-D94A-438B-84EE-6390FA1E82EB}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{79CEA165-5660-4635-9854-FA3433E8CA86} = {BF71DC5C-2815-4B55-A3F2-4636DD267EB0}
{83F16175-43B1-4C90-A1EE-8E351C33435D} = {A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}
{8E6D5255-776D-4B61-85F9-73C37AA1FB9A} = {A6A6AF7D-D6E3-442D-9B1E-58CC91879BE1}
{5BFF3686-D94A-438B-84EE-6390FA1E82EB} = {ED8079DD-2B06-4030-9F0F-DC548F98E1C4}
EndGlobalSection
EndGlobal
File renamed without changes.
17 changes: 13 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,19 @@ Higher

A lightweight library of abstractions for Higher-kinded programming in F#, based on

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[Lightweight Higher-Kinded Polymorphism][flops-2014-paper]<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Jeremy Yallop and Leo White<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Functional and Logic Programming 2014<br/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[OCaml implementation][ocaml-implementation]<br/>
> [Lightweight Higher-Kinded Polymorphism][flops-2014-paper]
>
> Jeremy Yallop and Leo White
>
> Functional and Logic Programming 2014
>
> [OCaml implementation][ocaml-implementation]

[flops-2014-paper]: https://ocamllabs.github.io/higher/lightweight-higher-kinded-polymorphism.pdf
[ocaml-implementation]: https://github.com/ocamllabs/higher

## Build Status

Mono | .NET
---- | ----
[![Mono CI Build Status](https://img.shields.io/travis/palladin/Higher/master.svg)](https://travis-ci.org/palladin/Higher) | [![.NET Build Status](https://img.shields.io/appveyor/ci/palladin/Higher/master.svg)](https://ci.appveyor.com/project/palladin/Higher)
2 changes: 2 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
#### 1.0 - October 17 2016
* Initial release
9 changes: 9 additions & 0 deletions appveyor.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
init:
- git config --global core.autocrlf input
build_script:
- cmd: build.cmd All
test: off
version: 0.0.1.{build}
artifacts:
- path: bin
name: bin
18 changes: 18 additions & 0 deletions build.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
@echo off
cls

.paket\paket.bootstrapper.exe
if errorlevel 1 (
exit /b %errorlevel%
)

.paket\paket.exe restore
if errorlevel 1 (
exit /b %errorlevel%
)

IF NOT EXIST build.fsx (
.paket\paket.exe update
packages\build\FAKE\tools\FAKE.exe init.fsx
)
packages\build\FAKE\tools\FAKE.exe build.fsx %*
Loading