! Instances are then simply a concrete value, like
for example
thething :: SomeThing Foo Bar Baz
thething = SomeThing {
f1 = id
, f2 = filter (3) . map length
, ...
, role = Role1
}
Regards,
apfelmus
--
http://apfelmus.nfshost.com
was first discovered/used when
designing the DSL Lava, if I am informed correctly.)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
/#washhtml
which can statically ensure that only well-formed (with a few minor
caveats I think) HTML is generated.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
not equals
from other languages.
Forget Pascal: think of it as a diamond.
I too like shiny diamonds, as exemplified in
http://apfelmus.nfshost.com/monoid-fingertree.html
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
/wadler/papers/marktoberdorf/baastad.pdf
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
in xs !! k and only ask
about the number of comparisons it takes to evaluate xs !! k , then it
is possible to make the standard quicksort slightly lazier so that
this works, too. Details in the link given above.)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
with these values.
For a concrete example,
http://apfelmus.nfshost.com/random-permutations.html
might help.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
)
| otherwise= Nothing
or an ordinary sort
qsort :: Ord a = [a] - [a]
qsort = quicksort (\x a b - snd a ++ [x] ++ snd b) []
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe
is essentially what you coded.
To read about hylo f g = cata g . ana f with quicksort as example
again in a slightly different light, see also the following blog post by
Ulisses Costa
http://ulissesaraujo.wordpress.com/2009/04/09/hylomorphisms-in-haskell/
Regards,
apfelmus
--
http
this.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Raynor Vliegendhart wrote:
On 7/9/09, Heinrich Apfelmus apfel...@quantentunnel.de wrote:
Of course, some part of algorithm has to be recursive, but this can be
outsourced to a general recursion scheme, like the hylomorphism
hylo :: Functor f = (a - f a) - (f b - b) - (a - b)
hylo f g
repeat head
= cata head . ana repeat
and the intermediate data structure is
Fix []
which is an infinite nested tower of infinite lists.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe
://www.cse.chalmers.se/~patrikj/poly/afp98/
It's a bit verbose at times, but you only need the first few chapters to
get an idea about polynomial functors (sums and pairs) and mu .
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe
of
LT - sweep xs (y:ys)
EQ - (x,y) : sweep xs ys
GT - sweep (x:xs) ys
This algorithm needs a proof of correctness, though. And it's longer
that the Data.Set version, too.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
Just k - insertWith x (+1) m
Nothing - insert x 1 m
In the scope of with , ambiguous qualifications default to Data.Map .
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing
= ...
For each ambiguous function, the compiler creates a type class and
corresponding instances and type inference will sort out the rest (or
throw a type error).
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell
that names only need to be qualified when they are
ambiguous, which Map and ByteString are not.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
page
that concisely explains it right now.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Henning Thielemann wrote:
Heinrich Apfelmus schrieb:
Note that there are alternative solution for this particular problem.
For instance, a version of qualified with different semantics will do;
something like this
import Data.List
import sometimes qualified Data.Map as Map
that you need to annotate them with the extraneous
constructor. In fact, that's exactly the purpose of the constructor;
think of it as an aid for the type checker.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe
= I :: Instance Bar
moo bar ... -- usage
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
) = f x : map f xs
? Whenever I write a pure higher order function, I'd also have to
document the order of effects.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
. That
shouldn't happen if used correctly, but might give a headache when
debugging.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Heinrich Apfelmus wrote:
Job Vranish wrote:
I've been in a situation a lot lately where I need to keep a collection of
values, and keep track of them by a persistent index.
module Store (Key, Store, empty, add, delete, lookup) where
newtype Key = Key { int :: Int }
empty
hask...@kudling.de wrote:
You are asked to iterate over the list and calculate the average value
of each 3 neighbouring values.
Lambda Fu, form 72 - three way dragon zip
averages3 xs = zipWith3 avg xs (drop 1 xs) (drop 2 xs)
where avg a b c = (a+b+c) / 3
Regards,
apfelmus
--
http
-options: -framework vecLib
to the hmatrix.cabal file and possibly remove the other library flags.
I suggest nagging the maintainer about this.
(Also, I had to remove and Intel specific opcode when compiling on PowerPC.)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
,
then have a paperback/PDF version.
This might be what you're looking for:
http://www.realworldhaskell.org/blog/2008/02/10/about-our-comment-system/
A pity the web interface wasn't written in Haskell. ;)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
not what you meant.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
it helps finding the loop.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
#Using_constructors_and_combinators
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
or something.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
have a haiku I missed? Or even better, is anyone
feeling poetically inspired tonight? :)
drop autumn leaves
until . all . pure . color . Left
fail . frost otherwise
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
)
or to implement zippers for the structure I need (probably too hard for me).
It's not too hard for you. You've got a whole haskell-cafe and #haskell
at your fingertips, after all. ;)
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe
. :)
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
from the origin, n the side length of the grid) instead of O(1).
Put differently, using Data.Tree.Zipper.parent on B will move you to
C, not to A.
I mean, O(d) may be fine for you, but it's not O(1) for everything as
advertised. :)
Regards,
H. Apfelmus
not constant time.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
disappeared completely. :)
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
monad and hoping that using
it somehow gives an insight into the problem domain.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
/base/Data-Monoid.html
I think it would be great if the haddock documentation itself were a
wiki, so everyone can edit it right in place.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
edition).
http://www.amazon.com/
Introduction-Functional-Programming-using-Haskell/dp/0134843460
I think that this book is a good benchmark for measuring the amount of
practice to be invested in learning Haskell.
Regards,
H. Apfelmus
___
Haskell
that I would try to learn a programming language, for
example Python, without obtaining a paper book on it.
Regards,
H. Apfelmus
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Paul Moore wrote:
Apfelmus, Heinrich wrote:
How to learn? The options are, in order of decreasing effectiveness
university course teacher in person
book irc
mailing list
online tutorial
haskell wiki
haddock documentation
Reason
Andrew Coppin wrote:
Heinrich Apfelmus wrote:
Andrew Coppin wrote:
instance (Monad m) = Functor m where
fmap f ma = do a - ma; return (f a)
While that's quite interesting from a mathematical point of view, how is
this useful for programming purposes?
Surely, you agree
)
What is SQL, do they mean the SesQuiLinear forms that I'm familiar with?
But what does it have to do with TerminalObjectCoSquared? I'm confused.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
david48 wrote:
Apfelmus, Heinrich wrote:
Hm, what about the option of opening Bird's Introduction on Functional
Programming using Haskell in the section about fold? Monoid is on page
62 in the translated copy I've got here.
I don't think that I would try to learn a programming language
, and all the different data structures mentioned
above arise by different choices for this monoid.
Let me explain this monoid magic, albeit not in this message which would
become far too long, but at
http://apfelmus.nfshost.com/monoid-fingertree.html
Regards,
apfelmus
--
http://apfelmus.nfshost.com
, thanks.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
a 0th
order language. Layout combinators in the spirit of TeX or Lout are more
flexible while being simpler. In any case, a simple primitive
grid :: [[Rect a]] - Rect a
that arranges widgets in a rectangular grid should be enough for GUIs.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
nothing about usability. :-)
Hehe, well given that CSS doesn't even have such a primitive... :)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
bytecode consisting
of 2 and 1.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
this as a DSL?
sumFor x xs f =
\sum_{ ++ x ++ = ++ head xs ++ }^{ ++ last xs ++ }
++ f x
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
the list? The idea is that most of
the tree structure survives in the list and can be reconstructed.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
not. The goal is simply to drastically lower the bar of
participation.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
/manual/en/function.preg-match.php
But I'm not sure whether this form of commenting is the best way to
write/improve documentation. (The many proposed regular expressions for
validating e-mail addresses sure have a certain hilarity to them...)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
(dup op)
That what you're looking for? :-)
The pairs are of course an applicative functor
(*) = uncurry (***) -- from Control.Arrow
pure x = (x,x)
pointwise op x y = pure op * x * y
Regards,
apfelmus
--
http://apfelmus.nfshost.com
in practice. Writing a
proper parser is too complicated if your language doesn't have parser
combinators. :)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
Jon Fairbairn wrote:
Heinrich Apfelmus writes:
The answer is a resounding yes and the main idea is that shuffling a
list is *essentially the same* as sorting a list; the minor difference
being that the former chooses a permutation at random while the latter
chooses a very particular
Felipe Lessa wrote:
Heinrich Apfelmus wrote:
It's fair, but may duplicate elements, i.e. it doesn't necessarily
create a permutation. For example, rs could be something like
rs = [5,3,3,3,2,4]
But our sort doesn't discard values when the keys are the same. For example,
[1,2,3,4
these existentially quantified types and how the
ST monad works?
Maybe
http://en.wikibooks.org/wiki/Haskell/Polymorphism
can help?
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http
that is the Monad.Reader. :( Or can it?
Thanks to the Simple Permissive License under which the Monad.Reader
publishes, this is not necessarily a dichotomy, though. We can always
convert it to hypertext afterwards.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
[a]) - T' = forall a. (T[a] - T')
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
think that's because FP is guilty of inventing the circular time
traveling knots^1 used to correctly predict future election results in
the first place.
^1 See also Russel O'Connor's article in
http://www.haskell.org/sitewiki/images/1/14/TMR-Issue6.pdf
Regards,
apfelmus
--
http
exists a. (a - _|_) = exists a. not a ?
I mean, a can be a proposition now, so what about taking
a = forall b.b = _|_ ?
Does exists a imply that the example proposition constructed should
true or is it enough to be able to construct a proposition at all?
Regards,
apfelmus
--
http
the purpose of a zipper.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
believe with your code that it
still equals 1. As apfelmus said, update needs to completely
re-construct the zipper structure with the tied knot, which defeats
the purpose of using a zipper in the first place.
I got it. I dont't know what your expression tied knot is referring
to but I got
Cristiano Paris wrote:
Heinrich Apfelmus wrote:
...
Such self-reference is usually called tying the knot, see also
http://www.haskell.org/haskellwiki/Tying_the_Knot
I didn't know. Would you call this Tying the knot as well?
http://yi-editor.blogspot.com/2008/12/prototypes-encoding-oo
++ ys))
~= zip xs (tail xs) ++ [(last xs, head ys)] ++ zip ys (tail ys)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
for this vote, but I'm
afraid that without assisting technology (instant and visual feedback),
the voting process will more or less deteriorate to that due to the
difficulty of creating quality input votes.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
Anton Tayanovskyy wrote:
Didn't Haskell have a syntax king? I vote for a logo king: let Don
Steward decide which logo is best. --A
I propose to use concordet voting to appoint a new king from the 100
aspiring candidates ... ;)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
is (should be) high quality content. :)
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
-liner and the
explicit version. It says exactly what it means, almost in English.
I couldn't agree more. In other words, splitAt is really to be thought
of as a function that lives in the state monad.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
Manlio Perillo wrote:
Heinrich Apfelmus ha scritto:
I think you'd have had a much easier time by starting with a proper book
right away, like Richard Bird's Introduction to Functional Programming
in Haskell, accompanied by Real World Haskell.
Unfortunately, one year ago Real World Haskell
developments like the blueprint technique by Bertram
Felgenhauer.
http://thread.gmane.org/gmane.comp.lang.haskell.cafe/15135
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org
the focus to the site from scratch does not
take constant time, obviously.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
that
loop :: IO ()
loop = loop
and
loop' :: IO ()
loop' = putStr o loop'
are indistinguishable in the
IO a ~ World - (a, World)
semantics. Both expressions would be _|_. But clearly, the latter
produces some output while the former just hangs.
Regards,
apfelmus
--
http
:: [Integer]
primes' :: () - [Integer]
for casual (i.e. throwaway program to solve a Project Euler problem) and
for memory aware use respectively.
Regards,
apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
. Admittedly, I don't know how many people
actually do so...
I did, I did!
http://projects.haskell.org/operational/Documentation.html#proof-of-the-monad-laws-sketch
Regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing
, though.
Regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
to wrestle with the existential types for
takeC and dropC a bit, but that shouldn't be much of a problem. For
instance, you can fuse these functions into runLayers and hide the
existential types somewhere in the recursion.
Regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
quantification ). You have to encode it in some way, for instance with a
data type
data Exists f = forall c . Exists (f c)
takeC :: Int - Compoz a b - Exists (Compoz a)
Regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe
,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
that GHC has long supported existential types, just not the
explicit syntax.
Regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
://hackage.haskell.org/package/hmatrix
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
of IO, it is a bit harder to test
automatically, so the model might be useful to have.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo
with this is that I need the FlexibleContexts extension to
do that. There goes Haskell2010 compatibility.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman
that way. At some
point, you need something that works at another level than pure
functions. What the *hell* do you do?
I think a better invective would be amazing.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe
obligation! (At least, I don't see any obvious one. Maybe a clever abuse
of parametricity helps.) It might be an option in Agda, though.
In that light, it is entirely reasonable that you have to use
unsafePerformIO .
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
://apfelmus.nfshost.com/blog/2011/04/24-frp-push-driven-sharing.html
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Ryan Ingram wrote:
Apfelmus, I hope you don't abandon your efforts, at least for the selfish
reason that I enjoy reading your blog entries about trying to implement it!
:D My reasoning was that a temporary demand-driven implementation would
allow me to release the library sooner; I want
Ryan Ingram wrote:
Heinrich Apfelmus wrote:
However, even in a demand-driven implementation, there is one optimization
that I would like make: when there are multiple external events, say e1 and
e2, the network splits into subnetworks that react only to one of the
inputs. For instance, your
on the
Producer/Transformer/Consumer trilogy.
I'd love to hear thoughts on the issue, especially from David.
I vastly prefer the names Producer/Transformer/Consumer over the others.
Then again, I never quite understood what Iteratees were all about in
the first place.
Best regards,
Heinrich Apfelmus
Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
be worth to include the extra hoops (EnableGUI) in the GLFW
package.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
cross-platform GUI toolkits is that they
embed a lot of wisdom about platform quirks (Cocoa is particularly
annoying) that you would have to solve again.
Best regards,
Heinrich Apfelmus
--
http://apfelmus.nfshost.com
___
Haskell-Cafe mailing list
601 - 700 of 837 matches
Mail list logo