hsext works
[pdhaskell:hsext.git] / README
1 hsext -- Haskell objects for Pd
2 Copyright (C) 2007 Claude Heiland-Allen
3
4
5 This program is free software; you can redistribute it and/or
6 modify it under the terms of the GNU General Public License
7 as published by the Free Software Foundation; either version 2
8 of the License, or (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18
19
20 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
21 ~~~~ General Documentation ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
23
24 what works:
25 - [hsext Swap]
26 - more than one [hsext]
27 - deleting some [hsext]
28
29 untested:
30 - chaining
31 - reentrancy
32
33 make && cd examples && pd -path .. Swap-help.pd
34
35 Edit Makefile if it doesn't work.
36
37
38 Tested on GNU/Linux/Gentoo x86/athlon-xp with:
39
40 ghc-6.4.2
41 hs-plugins-1.0-rc0
42 gcc-4.1.1
43 pd-0.39-2
44
45 (ghc-6.6 + hs-plugins-1.0-rc0 = pain, you have been warned)
46
47 (using DT_TEXTREL in a shared library is a huge hack and
48 won't work with some loaders on some architectures, you have
49 been warned)
50
51
52 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 ~~~~ Contents ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55
56   README    -- this file
57   COPYING   -- legal
58
59   Makefile  -- how to build
60
61   api/      -- files required by [hsext] at runtime
62   build/    -- place to store temporary files during build
63   examples/ -- some examples
64   hsext/    -- source code
65
66
67 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
68 ~~~~ State Semantics ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70
71 ~~~~ CASE 0 ~ CONSTRUCTION ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
72
73   >-build->
74               new
75   <-rturn-< 
76
77 ~~~~ CASE 1 ~ SIMPLE INLET ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
78
79   >-inlet->
80               take
81               modify
82               put
83   <-rturn-<
84
85 ~~~~ CASE 2a ~ COMPLEX INLET ~ SIMPLE ~~~~~~~~~~~~~~~~~~~~~~~~~~
86
87   >-inlet->
88               take
89               modify
90               put
91                       >-outlet->
92                                   |simple|
93                       <-return-<
94   <-rturn-<
95
96 ~~~~ CASE 2b ~ COMPLEX INLET ~ REENTRANT ~~~~~~~~~~~~~~~~~~~~~~~
97
98   >-inlet->
99               take
100               modify
101               put (i)
102                       >-outlet->
103            |reentrant|
104   >-inlet->
105               take
106               modify
107               put (ii)
108   <-rturn-<
109            |reentrant|
110                       <-return-<
111               choose(*) one of
112                 (i)  from scope
113                 (ii) from state
114   <-rturn-<
115
116   (*) generally choose (i) for more outlets and (ii) for return
117
118 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
119 EOF