If you are not sure if the website you would like to visit is secure, you can verify it here. Enter the website address of the page and see parts of its content and the thumbnail images on this site. None (if any) dangerous scripts on the referenced page will be executed. Additionally, if the selected site contains subpages, you can verify it (review) in batches containing 5 pages.
favicon.ico: villane.wordpress.com - Villane | Thoughts on software.

site address: villane.wordpress.com redirected to: villane.wordpress.com

site title: Villane Thoughts on software development

Our opinion (on Monday 24 August 2026 9:52:47 UTC):

GREEN status (no comments) - no comments
After content analysis of this website we propose the following hashtags:



Meta tags:
description=Thoughts on software development;

Headings (most frequently used words):

of, slang, parser, mixfix, operators, combinators, part, overloading, and, writing, solution, allow, 2012, lines, fire, syntax, for, klang, classes, is, new, villane, menu, categories, review, thinking, about, modular, board, game, design, evolution, prototype, matters, in, bonus, 2a, language, goals, how, to, solve, math, notation, post, navigation, twitter, updates, archives, thoughts, on, software, development, next, steps, reading, cannot, suck, repetition, bad, multiple, ways, things, familiar, good, conclusion, custom, operator, precedence, rules, compiler, infrastructure, ide, debugging, class, methods, 1a, package, level, functions, haskell, style, type, pros, cons, mathematical,

Text of the page (most frequently used words):
the (353), and (195), that (123), for (89), this (82), but (67), with (66), not (64), operators (64), are (57), have (54), slang (54), #precedence (53), can (46), some (45), language (44), parser (43), #operator (39), would (37), more (37), game (37), programming (35), there (35), will (35), double (34), languages (32), syntax (32), expression (31), mixfix (31), you (30), type (30), vector2 (29), into (27), grammar (27), rules (27), about (26), code (25), scala (25), think (24), than (24), only (24), one (24), all (24), graph (23), group (23), like (22), def (22), parentheses (21), right (21), because (20), them (20), design (19), actually (19), same (19), other (19), was (19), associative (19), post (18), klang (18), compiler (18), should (18), first (18), then (18), which (17), left (17), might (17), well (17), things (17), prefix (17), add (17), board (17), from (16), still (16), scheme (16), 2012 (15), any (15), also (15), where (15), could (15), multiplication (15), parsers (15), look (15), part (15), writing (15), use (14), want (14), aliases (14), don (14), class (14), methods (14), what (14), even (14), most (14), boolean (14), good (13), much (13), when (13), method (13), allow (13), way (13), few (13), such (13), next (13), many (13), infix (13), tightest (13), new (13), mathematical (12), make (12), defined (12), just (12), really (12), lot (12), instead (12), time (12), library (12), combinators (12), write (12), get (11), now (11), using (11), maybe (11), work (11), how (11), mostly (11), define (11), tighter (11), closed (11), software (11), must (10), tagged (10), posted (10), example (10), they (10), erkki (10), lindpere (10), probably (10), these (10), based (10), name (10), source (10), arithmetic (10), between (10), modules (10), neg (10), exp (10), cmp (10), unicode (9), classes (9), alias (9), here (9), reading (9), simple (9), types (9), had (9), each (9), multiple (9), used (9), symbols (9), lines (9), value (9), map (9), our (9), though (9), groups (9), negation (9), quite (9), find (9), mul (9), january (8), notation (8), doesn (8), enough (8), sure (8), single (8), has (8), implemented (8), going (8), able (8), put (8), overloading (8), level (8), goals (8), implement (8), ide (8), programs (8), means (8), holes (8), their (8), least (8), non (8), comparison (8), equality (8), set (8), play (8), create (7), know (7), above (7), better (7), xor (7), instance (7), intrinsic (7), parts (7), case (7), allowed (7), form (7), package (7), take (7), later (7), open (7), another (7), binds (7), ways (7), long (7), addition (7), exponent (7), games (7), fire (7), bomberman (7), development (7), started (6), already (6), 2008 (6), 2011 (6), compilers (6), text (6), yet (6), since (6), nice (6), those (6), llvm (6), program (6), both (6), performance (6), result (6), java (6), different (6), out (6), separate (6), tests (6), test (6), error (6), usable (6), useful (6), paper (6), were (6), existing (6), somewhat (6), directed (6), describe (6), relations (6), productions (6), relation (6), own (6), user (6), term (6), idea (6), interesting (6), important (6), ops (6), short (6), lets (6), whole (6), being (6), made (6), identifiers (6), easy (6), villane (5), february (5), 2013 (5), parse (5), makes (5), actual (5), argument (5), version (5), solve (5), whether (5), last (5), solution (5), currently (5), thinking (5), pseudo (5), thoughts (5), current (5), thing (5), support (5), doing (5), myself (5), end (5), series (5), algebra (5), fact (5), pretty (5), described (5), although (5), didn (5), postfix (5), else (5), works (5), very (5), before (5), names (5), variable (5), list (5), isn (5), cases (5), thought (5), turn (5), loop (5), similar (5), true (5), while (5), repetition (5), its (5), ascii (5), during (5), modular (5), wordpress (4), com (4), blog (4), august (4), 2009 (4), may (4), posts (4), uncategorized (4), let (4), additional (4), allowing (4), identifier (4), grammars (4), course (4), characters (4), braces (4), turned (4), represented (4), data (4), moment (4), read (4), functions (4), wouldn (4), module (4), especially (4), explicit (4), files (4), eclipse (4), mentioned (4), project (4), errors (4), small (4), standard (4), messages (4), issues (4), packrat (4), agda (4), available (4), recursion (4), correct (4), does (4), edge (4), two (4), wanted (4), values (4), flexible (4), dsl (4), something (4), hole (4), complex (4), behind (4), concise (4), come (4), familiar (4), node (4), back (4), binding (4), integers (4), logical (4), bind (4), without (4), expressions (4), order (4), hope (4), why (4), mod (4), examples (4), try (4), less (4), abstraction (4), factor (4), construct (4), soon (4), int (4), curly (4), give (4), loops (4), ability (4), players (4), prototype (4), free (3), april (3), december (3), plain (3), anyway (3), words (3), call (3), three (3), provide (3), took (3), ideas (3), readable (3), function (3), hand (3), translate (3), users (3), adding (3), haven (3), collection (3), defining (3), compared (3), return (3), however (3), third (3), vecmath (3), extending (3), operation (3), far (3), year (3), compiled (3), directly (3), tools (3), warnings (3), features (3), etc (3), strings (3), always (3), crash (3), daniel (3), spiewak (3), miles (3), sabin (3), couldn (3), top (3), combinator (3), implementation (3), assuming (3), appear (3), treated (3), mean (3), danielsson (3), help (3), seen (3), others (3), word (3), internal (3), fixity (3), too (3), lots (3), allows (3), see (3), understand (3), quick (3), nothing (3), wrong (3), particular (3), problems (3), custom (3), added (3), every (3), mixfixgrammar (3), literal (3), production (3), nodes (3), question (3), replace (3), following (3), booleans (3), often (3), closely (3), including (3), having (3), purpose (3), sticking (3), relatively (3), completely (3), yield (3), checking (3), mix (3), known (3), fix (3), translation (3), bnf (3), turns (3), looked (3), subscript (3), definitions (3), future (3), designing (3), couple (3), array (3), programmers (3), canonical (3), consider (3), bad (3), file (3), down (3), readability (3), making (3), acc (3), line (3), familiarity (3), prototyping (3), balancing (3), testing (3), bit (3), progress (3), improved (3), document (3), hoping (3), after (3), working (3), continue (3), together (3), site (2), comments (2), manage (2), view (2), reader (2), content (2), log (2), sign (2), subscribed (2), subscribe (2), website (2), september (2), march (2), june (2), 2010 (2), july (2), search (2), until (2), improve (2), needed (2), compile (2), brace (2), hard (2), possible (2), certainly (2), sense (2), enable (2), specific (2), named (2), character (2), who (2), prefer (2), english (2), written (2), again (2), tuple (2), returns (2), registers (2), simply (2), represent (2), length (2), computevectorlength (2), val (2), main (2), sample (2), fields (2), usual (2), beginning (2), body (2), access (2), field (2), calls (2), similarly (2), got (2), created (2), inheritance (2), around (2), unless (2), abstract (2), over (2), max (2), say (2), implicit (2), except (2), division (2), ceremony (2), decided (2), seems (2), provides (2), real (2), advantage (2), typeclass (2), shouldn (2), selecting (2), style (2), none (2), haskell (2), given (2), vacation (2), ended (2), been (2), resemblance (2), off (2), systems (2), point (2), parsed (2), compilation (2), debugging (2), suite (2), default (2), basic (2), collections (2), coming (2), thanks (2), reviewing (2), drafts (2), restrictions (2), samples (2), principles (2), easily (2), state (2), improvement (2), total (2), dag (2), subsequent (2), found (2), minimal (2), changes (2), seemed (2), fit (2), parsing (2), constructs (2), creating (2), did (2), comes (2), spend (2), getting (2), reports (2), kind (2), cool (2), desirable (2), recently (2), ast (2), notice (2), edges (2), tight (2), deal (2), representation (2), opsleft (2), opsright (2), opsnon (2), opsclosed (2), opspre (2), opspost (2), internalarity (2), namepart1 (2), reference (2), answer (2), itself (2), looks (2), necessary (2), incorrect (2), aren (2), general (2), perhaps (2), accepted (2), correctness (2), prevent (2), reporting (2), almost (2), integer (2), implementing (2), surrounded (2), interpreted (2), remember (2), implicitly (2), due (2), clear (2), conjunction (2), typed (2), pair (2), related (2), tightly (2), include (2), contain (2), forms (2), fixed (2), change (2), several (2), commonly (2), declaration (2), tokens (2), context (2), won (2), expr (2), leave (2), irrelevant (2), bonus (2), vast (2), majority (2), anonymous (2), large (2), fast (2), recent (2), jvm (2), arrays (2), exists (2), potential (2), believe (2), people (2), concerned (2), achieve (2), cannot (2), suck (2), love (2), libraries (2), quickly (2), ola (2), agree (2), cards (2), variant (2), further (2), tens (2), hours (2), fun (2), best (2), core (2), played (2), lay (2), combine (2), mind (2), start (2), modularity (2), modelling (2), physical (2), wrote (2), vision (2), lack (2), wasn (2), designed (2), months (2), date (2), pain (2), generics (2), steps (2), driver (2), ctrl (2), times (2), run (2), weeks (2), comment, logged, loading, collapse, bar, subscriptions, report, privacy, account, apr, 2026, 2007, october, archives, tweets, t4ffer, twitter, updates, older, navigation, lexer, spacing, unfortunately, meaning, regular, surrounding, specially, ellipsis, dots, resembling, fortress, stuff, weird, rendered, whose, reusing, tuples, generates, takes, instances, held, infinite, number, skipped, toint, separated, uniform, principle, accesses, internally, intrinsics, usually, expose, instruction, immutable, math, opinion, pointers, material, literature, informed, decisions, gotten, reasons, necessarily, arity, creates, equivalent, manually, manual, require, members, required, differs, obviously, member, inference, string, complicate, introduce, second, confusing, handling, pros, cons, operations, operands, combinations, note, contains, bears, pull, listed, sooner, learn, aiming, self, hosting, spews, goes, jit, lastly, highlighters, bare, bones, llc, exist, outlined, euler, comprehensive, par, allocation, pools, garbage, collected, heap, pure, opengl, purposefully, setting, renaming, weren, live, relax, requirements, grok, understandable, builds, needs, github, parses, transitive, partial, ordering, acyclic, alternate, anders, ulf, norell, great, patch, characteristics, knowledge, assign, numeric, uses, exact, proposed, bitc, maude, viewpoint, syntactic, concept, easier, lists, feature, day, fixities, refers, sequence, alternating, arguments, thankfully, suggested, exactly, mixed, studying, phases, processes, annoying, feel, little, theory, practical, easiest, newbies, symbolic, scary, contexts, extremeley, looking, sucked, hack, gaping, resulted, hairy, everywhere, concludes, forget, interpreter, referenced, inside, introducing, along, big, late, recommend, continuing, subject, precedencegraph, succeed, namepart2, recursive, outer, groupstighterthan, instantiated, entire, sequential, composition, assumption, rarely, comparisons, disjunctions, conjunctions, complements, consequences, unary, binary, bound, care, checker, direct, ideal, workarounds, immediate, plans, wide, variety, puts, checks, arguably, validate, mistake, equal, calling, unrelated, sublanguages, dsls, presence, extremely, extend, logic, preclude, appearing, disallow, flexibility, host, complicated, imported, produces, blessing, curse, ourselves, follow, everything, apply, bitwise, thus, strongly, draw, transitivity, need, motivations, earlier, describes, reverse, compatible, associatve, intuitive, expectations, occasionally, deviating, common, demonstrate, aspects, show, subtraction, modulo, remainder, inequality, greater, disjunction, below, layer, precedences, instantiate, semantic, actions, rather, building, fashion, constant, concepts, statement, booleanliteral, integerliteral, consists, considering, assume, lexical, identified, literals, delimiters, introduced, notion, previous, plainly, simplified, straightforward, preferable, room, alternative, honest, encoding, simpler, initially, translating, overkill, conversion, shorthand, brevity, introduction, removed, mechanically, converted, superscript, normal, equivalents, basically, functional, optimised, range, normalising, weighs, considerations, conclusion, subscripts, index, indexed, quantifiers, comma, special, noticed, element, product, cube, root, absolute, definition, thisᵢ, stone, stick, significant, whitespace, experiment, varies, mathematics, blackboard, understood, subset, slight, differences, sdl_rect, hear, alarm, bells, sounding, readers, heads, willing, shoot, themselves, foot, stupid, usefulness, hands, smart, outweighs, negative, sides, spaces, ticks, certain, totally, isempty, nobody, your, gone, aliasee, aliased, either, duplicating, latter, lined, widely, aliasing, providing, helps, tension, ending, vice, versa, effectively, designers, regrets, desire, balance, sometimes, snippet, complete, tested, replacement, automatically, typing, regularly, copy, application, ubuntu, slows, matter, conveniently, mutable, local, variables, block, prefers, computing, varying, sugar, tail, likely, sum, xsᵢ, incredibly, distracting, conventions, liners, multi, deals, maths, close, enhanced, limited, everyone, nowadays, optimise, highly, subjective, experimenting, effect, deserves, explanation, lesser, extent, editor, magnitude, basis, ready, shot, stating, underlying, zen, inspired, bini, convinced, aids, improves, optimising, trying, unfamiliar, notes, matters, focus, wider, print, finding, inkscape, scribus, foxit, kinds, printing, printable, documents, challenge, focused, simplifying, clarifying, polishing, gave, rewrote, solid, imagine, remains, tell, elements, stand, pdf, followed, smaller, larger, improvements, suggestions, replaced, spice, called, bombarena, summer, somehow, came, strangely, dream, waking, image, gameplay, evolution, mayhaps, process, bgdf, places, boundaries, learned, layered, linear, rulebook, book, turning, tool, digitally, crude, visual, control, components, modify, parameters, hopefully, simplify, refactoring, modifying, moddability, rule, component, property, safe, paragraphs, corner, verify, properties, coq, verifies, setup, pieces, preliminary, stress, keep, done, experiments, variants, reverted, embodiment, place, crystallized, today, listening, 3ma, episode, modding, house, multiplayer, formula, theme, experimented, additions, route, poor, liked, similarity, fine, retain, blag, dormant, happy, pause, talk, driven, giving, various, explore, proper, generic, dependent, interoperability, deadlines, tooling, release, build, embedded, emit, dwarf, debug, info, debugged, pleased, gnu, debugger, shows, squiggly, includes, highlighting, fixes, assist, rewriting, click, select, rewritten, suggests, finished, initial, step, towards, requires, sources, linked, linker, infrastructure, theoretically, enabled, per, spent, blogged, sorry, forgot, framework, downside, slow, replacing, unknown, suspecting, pace, sporadically, continuously, bring, postpone, full, horrible, hacks, prevented, fulfilling, worked, vacations, drive, break, quarter, accomplished, reiterate, completed, review, ruby, python, maven, jrebel, rants, categories, home, skip, menu,


Text of the page (random words):
ely compared to each other but multiple comparisons of other types of values are often used in disjunctions conjunctions and complements to get back to the question in the beginning of the post what would the expression production in the grammar look like instead of expression value the short answer is that we replace with the mixfix grammar scheme instantiated with our particular precedence graph the long answer would probably take an entire blog post by itself you can read more about this scheme in the agda paper or look at the source code of my mixfix library the scheme looks somewhat like the parser combinators in the following pseudo code means sequential composition value variable literal expression mixfixgrammar precedencegraph value mixfixgrammar graph graph the precedence graph g an operator group node in the graph op an operator in a group parsers returns the result of the first parser in the list to succeed opsleft g all left associative infix operators in g opsright g all right associative infix operators in g opsnon g all non associative infix operators in g opsclosed g all closed operators in g opspre g all prefix operators in g opspost g all postfix operators in g operator op if op internalarity 0 op namepart1 if op internalarity 1 op namepart1 expression op namepart2 expression is an recursive reference back to the outer production these are the internal holes that can take any expression group g closed g non g left g right g any ops in this group closed g opsclosed g map operator closed ops non g g opsnon g map operator g non associative ops left g left g g left associative ops opspost g map operator opsleft g map operator g right g opspre g map operator right associative ops g opsright g map operator right g g g graph groupstighterthan g map group every group that binds tighter than g value or the tightest group of values return graph nodes map group if you don t understand this right now no big deal it s late enough that i couldn t come up with a better representation of the actual code that would fit in this post and if you are not familiar with parser combinators i would recommend reading daniel spiewak s post on the subject at least before continuing to the next part of this series if you notice the value and expression productions are referenced inside the mixfixgrammar this is no good if the mixfix library is to be a separate module so i actually implemented that by introducing a pseudo operator group that has a custom parser this pseudo group is then added to the precedence graph along with edges from every other group into that really tight group this concludes part 2 in the next part we will forget this pseudo code and use scala s parser combinators and my mixfix library to implement an actual parser for the language and maybe an ast and an interpreter as well thanks to miles sabin and daniel spiewak for reviewing drafts for this series of posts posted in programming programming languages scala tagged parsers programming programming languages scala slang mixfix operators parser combinators part 1 january 16 2012 by erkki lindpere 2 until recently slang s parser really sucked it was a quick hack implemented with scala s parser combinator library nothing really wrong about that in particular but there was a gaping hole in the grammar no operator precedence so to get an expression like a b c to mean a b c i had to add the parentheses myself in fact there were even more problems some things that should have been left associative were right associative this resulted in very hairy test code with lots of parentheses everywhere although i think parsers are cool i am actually not very good at writing one for a complex grammar i feel that i just know too little about the theory behind them or how to put it to practical use i ve used parser combinators before and think they are probably the easiest way for newbies like me to implement parsers so that s what i used the use of symbolic names in the library might be scary the first time but actually i think parsing is one of the few contexts where use of lots of symbols and extremeley concise code is desirable it allows one to put a lot of code on a few lines and when you are looking at or writing a parser you want to see many productions of the grammar at the same time to understand what is going on at least i do for slang i implemented something minimal that could parse the language i had no idea how to solve operator precedence well with parser combinators and i didn t want to spend a lot of time studying parsers because the next compiler phases seemed more interesting at first but getting the parser right is important for actually using the language because it s the first thing that processes the code and reports errors a parser that only kind of works can be very annoying thankfully miles sabin suggested that i should look into mixfix operator parsers and i did i don t know exactly where the word mixfix comes from so i m assuming it means mixed fixity operators can be prefix infix postfix or closed here are some samples prefix a infix a b postfix n closed a of course most languages have operators with all of these fixities the term mixfix actually refers to something more flexible than that a mixfix operator can be seen as a sequence of alternating name parts and holes in the expression a hole is where the operator s arguments go _ _ has two holes and one name part and is infix if _ then _ else _ has three name parts if then else and three holes and is prefix in the mixfix viewpoint many syntactic constructs might be seen as operators that can have precedence in relation to others and this concept of many name parts can make it easier to let users define their own operators in a more flexible way than just a single prefix or infix word as is allowed by scala i think this would be a really nice way of creating internal dsl s in slang like in scala most operators are really methods slang doesn t allow user defined fixity or precedence for methods yet or even multiple argument lists but i may add this feature one day there are existing languages that support mixfix operators such as agda maude and bitc to my knowledge all these languages assign numeric precedence values to operators and no language currently uses the exact scheme we will look at although it was proposed for agda mixfix operators can be implemented in many ways but one of the first things i found was the paper parsing mixfix operators by anders danielsson and ulf norell that was a great help to me i was able to implement the grammar scheme described in that paper on top of scala s parser combinators and patch that into slang s existing parser with minimal changes to existing productions the characteristics of the grammar scheme described in danielsson s paper seemed like a good enough fit for what i wanted for slang operator name parts and holes alternate there can t be two subsequent name parts or two subsequent holes if _ then _ else _ is ok if _ _ else _ is not operator precedence is described as a directed acyclic graph dag not as a total or partial ordering you only have to describe the precedence relations where they make sense more about this in the next post a directed edge means binds tighter than operator precedence is not transitive and does not mean binds tighter than prefix operators are treated as right associative a a postfix operators are treated as left associative n n left associative and right associative operators of the same precedence can t appear next to each other assuming is a right associative a b c would not be allowed parses are precedence correct implementation using left recursion is possible for example when using scala s packrat parsers there weren t any restrictions i couldn t live with in fact we could relax some of the above requirements and the scheme would still work for some grammars so i decided to implement this grammar scheme for slang pretty much as described in the paper although i didn t really grok all of the agda code samples the principles were easily understandable i implemented it as a separate library available on github that builds on top of the existing scala parser combinator library it might even be somewhat usable in it s current state but needs improvement in the next post we ll look at how to define a grammar for an arithmetic and boolean algebra language using mixfix operators in the third part we will actually implement the parser for the grammar look at performance issues and whether we can solve them with packrat parsers thanks to miles sabin and daniel spiewak for reviewing drafts for this series of posts posted in programming programming languages scala tagged parsers programming programming languages scala slang slang language goals for 2012 december 24 2011 by erkki lindpere 4 i m setting myself some goals for the slang language i m renaming klang to slang for the coming year by the end of 2012 i should have a usable and useful language programs must not crash unless you purposefully make them crash compiler must always provide nice error messages and not crash must be able to do io must be able to do opengl must have a small standard library io unicode strings basic collections parser combinators maybe programs that are mostly pure by default except when they re not doing io etc allocation in pools or a garbage collected heap performance mostly on par with c open source compiler written in scala a comprehensive test suite all language features must have tests all library functions must have tests all compiler errors and warnings must have tests some use case tests maybe a project euler based test suite all the things mentioned in the post where i outlined the first language most of those exist already there are a few additional things that would be nice to have but are not my explicit goals for the year the first is a self hosting compiler the current compiler spews out ll files which then get parsed and compiled by llvm tools such as llc but it would be nice to work with llvm directly another thing is separate compilation which i m probably not going to implement in the current compiler same goes for jit and lastly support for debugging syntax highlighters maybe a bare bones eclipse ide i should be able to pull off the things listed here some sooner and some later i still have a lot to learn about language design type systems and compilers and am not sure at which point i m going to open source it but i m aiming for june 2012 or so posted in language design programming languages slang tagged compilers klang language design programming languages slang klang how to solve overloading december 10 2011 by erkki lindpere 2 i haven t had much time to work on klang since my vacation ended but i ve been thinking about how to solve overloading note that this post contains pseudo code that bears resemblance to but is not actual klang code these are just thoughts so far given types double and vector2 x double y double there are mathematical operations that take both types as operands in different combinations but have the same name for example multiplication a double b double intrinsic operation a b a double v vector2 vector2 a v x a v y v vector2 a double vector2 a v x a v y solution 1 allow overloading of class methods package klang class double def that double intrinsic this that package vecmath extending double def v vector2 vector2 this v x this v y solution 1a allow overloading of package level functions package klang def a double b double intrinsic a b package klang vecmath def a double v vector2 vector2 a v x a v y solution 2 allow for haskell style type classes package klang typeclass multiplication a b c def a a b b c instance multiplication double double double def a double b double intrinsic a b package klang vecmath instance multiplication double vector2 vector2 def a double v vector2 vector2 a v x a v y pros and cons the first solution of allowing method function overloading as in java or scala will certainly complicate things especially when i introduce some form of inheritance currently there is none however i m not sure the second method which is more like the haskell way of handling overloading is any better especially the third type class argument return type will be confusing am i then allowed to also provide an instance multiplication double vector2 string which differs only in the last argument obviously it shouldn t be so if selecting a type class instance based on method return type was allowed that wouldn t work with klang s scala style type inference maybe the type class could have an abstract type member instead typeclass multiplication a b type result def a a b b result instance multiplication double vector2 type result vector2 def a double v vector2 vector2 a v x a v y but i haven t really decided whether to even have type classes or type members there seems to be a lot more ceremony required with type classes compared to simply allowing overloading methods or module level functions and i m not sure if that provides any real advantage i could say that defining a function a double b vector2 creates an implicit type class a b and an implicit instance of it double vector2 it would be equivalent to the manually defined type classes wouldn t it except in the manual case you could put division into the same type class with multiplication but that would still require more ceremony than simple overloading and what of functions like max a double b double and max a collection double it would be nice to be able to do have the 2 argument version for performance reasons type classes wouldn t necessarily solve that unless one could abstract over method argument arity i should probably read more literature to make better informed decisions about these things just haven t gotten around to those parts yet what do you think do you have an opinion about which way to go or any pointers to reading material posted in language design programming languages slang tagged compilers klang language design programming languages klang classes and math notation july 18 2011 by erkki lindpere 0 just got started with adding classes to klang at the moment only immutable classes can be created and there is no inheritance the fields and methods are more separated than usual the data is defined in the beginning of the class body as a single tuple type on the other hand there is a uniform access principle and both field accesses and method calls are represented the same way internally and in syntax actually the field access is implemented similarly to an intrinsic method call intrinsics in klang usually translate to a single llvm instruction and i m going to expose some of them to users as well here s a sample program with a class class vector2 data x double y double other methods skipped def v vector2 vector2 x v x y v y def length x² y² alias length def computevectorlength double val v1 vector2 1 1 val v2 vector2 2 3 v1 v2 def main co...
Thumbnail images (randomly selected): * Images may be subject to copyright.GREEN status (no comments)
  • Lines of Fire v0.1
  • Lines of Fire v0.3 - game...
  • Lines of Fire v0.4 - new ...

Verified site has: 73 subpage(s). Do you want to verify them? Verify pages:

1-5 6-10 11-15 16-20 21-25 26-30 31-35 36-40 41-45 46-50
51-55 56-60 61-65 66-70 71-73


The site also has references to the 2 subdomain(s)

  wordpress.com  Verify   subscribe.wordpress.com  Verify


Top 50 hastags from of all verified websites.

Supplementary Information (add-on for SEO geeks)*- See more on header.verify-www.com

Header

HTTP/1.1 301 Moved Permanently
Server nginx
Date Mon, 24 Aug 2026 09:52:46 GMT
Content-Type text/html
Content-Length 162
Connection keep-alive
Location htt????/villane.wordpress.com/
Alt-Svc clear
Server-Timing a8c-cdn, dc;desc=ams, cache;desc=BYPASS;dur=1.0
HTTP/2 200
server nginx
date Mon, 24 Aug 2026 09:52:47 GMT
content-type text/html; charset=UTF-8
vary Accept-Encoding
x-hacker Want root? Visit join.a8c.com/hacker and mention this header.
host-header WordPress.com
link <htt????/public-api.wordpress.com/wp-json/?rest_route=/sites/villane.wordpress.com>; rel= htt????/api.w.org/
vary accept, content-type, cookie
link <htt????/wp.me/3rz6>; rel=shortlink
content-encoding gzip
x-ac 2.ams _dfw MISS
alt-svc clear
strict-transport-security max-age=31536000
server-timing a8c-cdn, dc;desc=ams, cache;desc=MISS;dur=335.0

Meta Tags

title="Villane | Thoughts on software development"
charset="UTF-8"
name="viewport" content="width=device-width"
name="robots" content="max-image-preview:large"
name="generator" content="WordPress.com"
property="og:type" content="website"
property="og:title" content="Villane"
property="og:description" content="Thoughts on software development"
property="og:url" content="htt????/villane.wordpress.com/"
property="og:site_name" content="Villane"
property="og:image" content="htt????/s0.wp.com/i/blank.jpg?m=1383295312i"
property="og:image:width" content="200"
property="og:image:height" content="200"
property="og:image:alt" content=""
property="og:locale" content="en_US"
property="fb:app_id" content="249643311490"
name="description" content="Thoughts on software development"
id="bilmur" property="bilmur:data" content="" data-provider="wordpress.com" data-service="simple" data-site-tz="Etc/GMT-2" data-custom-props='{"enq_jquery":"1","logged_in":"0","wptheme":"pub\/sunspot","wptheme_is_block":"0"}'

Load Info

page size174035
load time (s)0.583045
redirect count1
speed download83243
server IP 192.0.78.12
* all occurrences of the string "http://" have been changed to "htt???/"