File ghc-fclabels.spec of Package ghc-fclabels

#
# spec file for package ghc-fclabels
#
# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


%global pkg_name fclabels
%bcond_with tests
Name:           ghc-%{pkg_name}
Version:        2.0.3.2
Release:        0
Summary:        First class accessor labels implemented as lenses
License:        BSD-3-Clause
Group:          Development/Languages/Other
Url:            https://hackage.haskell.org/package/%{pkg_name}
Source0:        https://hackage.haskell.org/package/%{pkg_name}-%{version}/%{pkg_name}-%{version}.tar.gz
BuildRequires:  ghc-Cabal-devel
BuildRequires:  ghc-mtl-devel
BuildRequires:  ghc-rpm-macros
BuildRequires:  ghc-template-haskell-devel
BuildRequires:  ghc-transformers-devel
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
%if %{with tests}
BuildRequires:  ghc-HUnit-devel
%endif

%description
This package provides first class labels that can act as bidirectional record
fields. The labels can be derived automatically using Template Haskell which
means you don't have to write any boilerplate yourself. The labels are
implemented as /lenses/ and are fully composable. Lenses can be used to /get/,
/set/ and /modify/ parts of a data type in a consistent way.

See "Data.Label" for an introductory explanation or see the introductory blog
post at <http://fvisser.nl/post/2013/okt/1/fclabels-2.0.html>

* /Total and partial lenses/

Internally lenses do not used Haskell functions directly, but are implemented
as categories. Categories allow the lenses to be run in custom computational
contexts. This approach allows us to make partial lenses that point to fields
of multi-constructor datatypes in an elegant way.

See "Data.Label.Partial" for the use of partial labels.

* /Monomorphic and polymorphic lenses/

We have both polymorphic and monomorphic lenses. Polymorphic lenses allow
updates that change the type. The types of polymorphic lenses are slightly more
verbose than their monomorphic counterparts, but their usage is similar.
Because monomorphic lenses are built by restricting the types of polymorphic
lenses they are essentially the same and can be freely composed with eachother.

See "Data.Label.Mono" and "Data.Label.Poly" for the difference between
polymorphic and monomorphic lenses.

* /Using fclabels/

To simplify working with labels we supply both a set of labels for Haskell's
base types, like lists, tuples, Maybe and Either, and we supply a set of
combinators for working with labels for values in the Reader and State monad.

See "Data.Label.Base" and "Data.Label.Monadic" for more information.

* /Changelog from 2.0.3.1 to 2.0.3.2/

> - Allow HUnit 1.5.*.

%package devel
Summary:        Haskell %{pkg_name} library development files
Group:          Development/Libraries/Other
Requires:       %{name} = %{version}-%{release}
Requires:       ghc-compiler = %{ghc_version}
Requires(post): ghc-compiler = %{ghc_version}
Requires(postun): ghc-compiler = %{ghc_version}

%description devel
This package provides the Haskell %{pkg_name} library development files.

%prep
%setup -q -n %{pkg_name}-%{version}

%build
%ghc_lib_build

%install
%ghc_lib_install

%check
%cabal_test

%post devel
%ghc_pkg_recache

%postun devel
%ghc_pkg_recache

%files -f %{name}.files
%defattr(-,root,root,-)
%doc LICENSE

%files devel -f %{name}-devel.files
%defattr(-,root,root,-)
%doc CHANGELOG README.md

%changelog