jhuni
Common Lisp is also ideal, it effectively supports paradigms other then functional, and has been or at least was the lingua franca for artificial intelligence for decades.
As a Lisp programmer and a mathematician myself I must disagree. I spent years working on mathematical applications using Lisp dialects, initially drawing inspiration from computer algebra systems like Axiom, Derive, Maxima, and Reduce and later drawing inspiration from ontologies and knowledge bases like SUMO and Cyc. All of these systems are heavily math based and they are based upon Lisp.
That makes more sense. I am coming from a mathematical background and not a computer science background myself.
> Mathematicians deal with sets, countable or otherwise, algebraic manipulations of them, bijective mappings, etc.
That is true. As a combinatorist I am one of those people who mainly focuses on countable sets. The isomorphism classes of sets (the counting numbers) are at the foundation of everything I do in combinatorics but other areas of mathematics (e.g topology) have very different approaches.
Let S be the set {a,b} and let T be the set {c,d}. There are two bijections S -> T between these two sets {(a,c),(b,d)} and {(a,d), (b,c)}. These two sets are isomorphic to one another because they have the same cardinality.
The isomorphism classes of sets are cardinalities which are themselves the natural numbers 0,1,2,3,... and infinity. In combinatorics we can just focus on the study of these isomorphism classes rather then sets themselves.
We can enumerate binary relations: ([],[0],[1],[[0 0],[0 0]],[[0 0],[0 1]],[[0 0],[1 0]],[[0 0],[1 1]],[[0 1],[0 0]],[[0 1],[0 1]],[[0 1],[1 0]],[[0 1],[1 1]]). Logical disjunction [[0,1],[1 1]] is equal to 10 in this enumeration.
Using the enumeration of binary relations the entire field of study of graph theory can be described in terms of natural numbers without any need for sets. As a result, graph theory is considered to be a branch of combinatorics. We only need to have sets mathematically when dealing with cardinalities like aleph one that emerge from uncountable sets.
Since analytic number theory deals with the uncountable set of real numbers and abstract algebra deals with operations on sets including the real numbers, these two fields are indeed founded on set theory. Algebraic combinatorics and combinatorial number theory are the branches of these two fields that focus on countable sets.
> And set theory is what mathematics calls type theory.
No it isn't. Just look up differences of type theory from set theory on wikipedia [1]. You almost never hear the word "type" spoken in math courses. According to John Shutt "I took some tolerably advanced math courses in college and graduate school. One thing I never encountered in any of those courses, nor that-I-recall even in the THUG talks, was a type. Sets aplenty, but not types" [2].
[1] Type theory differences from set theory http://en.wikipedia.org/wiki/Type_theory#Difference_from_set...
[2] Where do types come from http://fexpr.blogspot.com/2011/11/where-do-types-come-from.h...
In the C programming language types are mainly used to describe cardinalities. For example, char is the cardinality of the smallest addressable unit of memory of the machine (often 256). We don't need more then machine cardinalities as entire operating systems have been written in assembly and C. What advantages do type classes and GADTS have that make them worth adopting? Is there any evidence that they make programs more safe and reliable?
> My point with math is that Haskell libraries and code use mathematical abstractions (like various sorts of algebraic structures) far more than lisp; I was not taking about what people do with Haskell but rather how they do it.
I am building a computer algebra system with Lisp in my free time. There are many Lisp computer algebra systems that I have learned a lot from like Maxima, Reduce, and Axiom. One of my favorite computer algebra systems is GAP and it is written in C and not Haskell. I am not convinced that Haskell uses more mathematical abstractions and algebraic structures and I am not familiar with any well maintained computer algebra system written in Haskell.
> Having a flexible syntax that can look like math is far more important usually, and Haskell gets most of the way there without being too complicated.
Math doesn't look like anything. Mathematics is about abstract concepts (especially the natural numbers) not representations. You mean that Haskell is meant to look like math does on paper, but whats so important about using a paper syntax when we have keyboards?
Since when? Mathematics was originally founded on the study of the natural numbers. The mathematics I find most valuable (eunmerative combinatorics) still uses the natural numbers as its foundation and not type theory.
> Not only is the community particularly nice and welcoming, it's also special in not being afraid of a bit of math.
The Lisp community has never been afraid of math. John McCarthy had a PHD in mathematics and the earliest computer algebra systems were developed in Lisp. The Macysma computer algebra system (now developed as Maxima) predates Haskell by decades.
> Haskell has an incredible but also surprisingly simple type system. You can't just ignore that. There is nothing in lisp--not even typed Racket--that even comes close to Haskell's type system.
The most important thing for me is having the ability to describe cardinality (especially in terms of machine bits such as 2^8, 2^16, etc) and enumerations (like the ASCII character encoding). What aspect of Haskells type system is that Lisps need to "come close to"?
The Workers' Party of Korea attends the International Meeting of Communist and Workers parties along with the ruling parties of China, Laos, Vietnam, Nepal, Cuba and many other international communist parties. The DPRK definitely is affiliated with communists but its ideology isn't communism it is a combination of Korean nationalism, Juche, and self-reliance.
Since you equate communism with statism you don't know what it really means. Communism is a broad category of societies that do not have classes of social relations to the means of production. Three of the most important types of communism are primitive communisms which existed before the development of means of production, collectivist communism which is based upon common ownership of the means of production, and individualist communism which is based upon personal ownership of the means of production such as 3D printers and distribution on a free market.
The thing is that most software development is done on desktops and similar environments that Microsoft controls. Software development isn't usually done on mobile devices because they generally don't have keyboards. This means that developing an operating system that that doesn't alienate its users from production and that ultimately works to eliminate the user/producer distinction is something that remains out of our reach.
> Capitalism is intrinsic to certain innovations, so the need for closed designs is necessary.
When do you think it is okay to alienate consumers from the design process? Capitalism transforms peoples labour power into a commodity to be bought and sold in a competitive market. This alienates workers from their own productive lives and from one another. When is alienation which is intrinsic to capitalism ever essential to innovation?
They weren't born they way, these people lost their curiosity because they were put into a society that alienates them from the design process. Proprietary software alienates its users from the software design process and it thereby destroys the curiosity people have about the inner workings of computers. Nonetheless, proprietary software is heavily present in schools because companies like Microsoft give out free licenses to them.
Capitalism is based upon uneven and unequal development so much of the global population is still denied an education and even a basic level of literacy. Those people would love to have any education at all to complain about in the first place.
I feel it is important to put this person's complaints into the context. Nonetheless, I will be the last person in the world to actually defend the education system in first world because it is just based on turning the first world citizens into obedient service sector workers and consumers of products mainly produced in China and extracted from the third world.
> Our system should be producing more adults with this same fearlessness, who go after what they really want from the start in rational, systematic ways. Right now, we tend to produce ‘answer-centred’ people who are terrified of doing things wrong.
Capitalism is not based upon letting people go after what they really want. Capitalism is based upon having a class of people (the proletariat) who are alienated from their own work and for whom doing things wrong means getting fired.
> We need to find a better way to teach children, one that doesn’t kill their innate sense of curiosity and play.
We need a system that teaches children to be alienated from the things around them, their productive activities, their own lives, and their peers. This is demanded by the capitalist mode of production itself and there is no way of getting around this without revolutionizing society.
I appreciate how you twisted this. This reveals that you take an ageist position against teenagers. When I was fifteen I knew everything I needed to know about the world and I was studying higher mathematics full time in college. Teenagers can be just as intelligent and productive as anyone else. Despite this, you value the right of movie companies like Metro-Goldwyn Mayer, 20th Century Fox, Disney, Paramount, Warner bros, and Universal Studios to make a profit over the freedom of our teenagers to share with one another.
> I don't care of those creators are profit-driven mega-corporations or starving artists.
The existing copyright policies are created by profit-driven mega-corporations rather then individual artists because the big corporations have all the political power, so you are implicitly supporting these corporations over individual artists.
Programmers would greatly benefit from living in a society where all software is free because they would never have to use a program that alienates them from the process of software production. Operating systems could be rebuilt to eliminate the user/produce distinction and to drastically increase programmer productivity. However, profit-driven mega-corporations like Microsoft and Apple cannot allow that because that would destroy their profit model.
Similarly, individual artists would benefit from the freedom to use our accumulated artistic knowledge without being alienated from it by the profit-driven corporations. Mega-corporations don't want that, they want what we have now which is copyright that lasts 120 years after creation.
> Thought experiment: in games like World of Warcraft, weapons, armor, etc, are trivially reproducible.
I don't have much of an issue with participating in a virtual commodity economy for fun and not to make a profit. Blizzard makes its money off of WoW from subscription fees rather then game economy itself. However, some free-to-play games like Maple Story run cash shops for profit and I oppose the existence of such cash shops as much as I do all other markets that sell artificially scarce goods for a profit.
Piracy isn't really stealing because it isn't changing owners from one person to another. Piracy is more like communism because it is an attack against the idea of private property itself.
Perhaps the most important aspect of being as rich as a bourgeoisie is that you have a secure existence. You don't have to worry about finding a job, paying for health care, paying child support, paying rent on time so that you don't have to join the masses of homeless people living in the cold, or any of the other things ordinary people have to worry about. Having a secure existence is a major stress reliever and it makes your life better no question.