-- -- Control.Concurrent.Session :: Session Types for Haskell -- Copyright (C) 2007 Matthew Sackman (matthew@wellquite.org) -- -- This library is free software; you can redistribute it and/or -- modify it under the terms of the GNU Lesser General Public -- License as published by the Free Software Foundation; either -- version 2.1 of the License, or (at your option) any later version. -- -- This library is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -- Lesser General Public License for more details. -- -- You should have received a copy of the GNU Lesser General Public -- License along with this library; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, -- MA 02111-1307 USA -- module Control.Concurrent.Session (SType(..) ,SessionSpec(..) ,runSessionWithProcs ,Proc(..) ,send ,recv ,sendLog ,recvLog ,(>~>) ,(>~>=) ,returnS ,sliftIO ,sliftIO' ,end ,loopEnd ,SendT ,RecvT ,EndT ,LoopEndT ,LoopT ,OfferT ,SelectT ,SessT ,SessChoiceT ,SessionState ,JustSendsRecvs ,ZeroOrMoreSteps ,mkLoopS ,mkLoop -- ,select -- ,offer ,cons ,nil ,Succ(..) ,Zero(..) ,Cons(..) ,Nil(..) ,List(..) ,TypeAsIndex(..) ,Choice(..) ,ListIndexed(..) ,listAtTyIdx ,listToChoice ,(~||~) ,EmptySpecList(..) ,EmptyProcList(..) ,BuildReductionList(..) ,ListLength(..) ,MatchAnyChoice ,offer ,select ,DualT(..) ) where import Control.Concurrent.Session.Loop import Control.Concurrent.Session.Choice import Control.Concurrent.Session.BaseClasses import Control.Concurrent.Session.BaseTypes import Control.Concurrent.Session.List import Control.Concurrent.Session.State import Control.Concurrent.Session.ExtraClasses import Control.Concurrent.Session.Runtime