File ghc-streams.spec of Package ghc-streams
#
# spec file for package ghc-streams
#
# Copyright (c) 2017 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 streams
Name: ghc-%{pkg_name}
Version: 3.3
Release: 0
Summary: Various Haskell 2010 stream comonads
License: BSD-3-Clause
Group: Development/Libraries/Haskell
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-adjunctions-devel
BuildRequires: ghc-comonad-devel
BuildRequires: ghc-distributive-devel
BuildRequires: ghc-rpm-macros
BuildRequires: ghc-semigroupoids-devel
BuildRequires: ghc-semigroups-devel
%description
Various Haskell 2010 stream comonads. * "Data.Stream.Future" provides a
coinductive anti-causal stream, or non-empty 'ZipList'. The comonad provides
access to only the tail of the stream. Like a conventional 'ZipList', this is
/not/ a monad.
> data Future a = Last a | a :< Future a
* "Data.Stream.Future.Skew" provides a non-empty skew-binary random-access-list
with the semantics of 'Data.Stream.Future'. As with "Data.Stream.Future" this
stream is not a 'Monad', since the 'Applicative' instance zips streams of
potentially differing lengths. The random-access-list structure provides a
number of operations logarithmic access time, but makes
'Data.Stream.Future.Skew.cons' less productive. Where applicable
"Data.Stream.Infinite.Skew" may be more efficient, due to a lazier and more
efficient 'Applicative' instance.
>
* "Data.Stream.Infinite" provides a coinductive infinite anti-causal stream.
The 'Comonad' provides access to the tail of the stream and the 'Applicative'
zips streams together. Unlike 'Future', infinite stream form a 'Monad'.
The monad diagonalizes the 'Stream', which is consistent with the behavior of
the 'Applicative', and the view of a 'Stream' as a isomorphic to the reader
monad from the natural numbers. Being infinite in length, there is no
'Alternative' instance.
> data Stream a = a :< Stream a
* "Data.Stream.Infinite.Skew" provides an infinite skew-binary
random-access-list with the semantics of "Data.Stream.Infinite" Since every
stream is infinite, the 'Applicative' instance can be considerably less strict
than the corresponding instance for "Data.Stream.Future.Skew" and performs
asymptotically better.
>
* "Data.Stream.Infinite.Functional.Zipper" provides a bi-infinite sequence,
represented as a pure function with an accumulating parameter added to optimize
moving the current focus.
> data Zipper a = !Integer :~ (Integer -> a)
* "Data.Stream.Supply" provides a comonadic supply of unique values, which are
generated impurely as the tree is explored.
%package devel
Summary: Haskell %{pkg_name} library development files
Group: Development/Libraries/Haskell
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
%post devel
%ghc_pkg_recache
%postun devel
%ghc_pkg_recache
%files -f %{name}.files
%doc LICENSE
%files devel -f %{name}-devel.files
%doc CHANGELOG.markdown README
%changelog