From 581371b07318df0f294d0cf8352b26e1225ccf1b Mon Sep 17 00:00:00 2001 From: Lijero Date: Mon, 22 Jan 2018 16:03:54 -0800 Subject: [PATCH] Uploading the current site in full so I can ignore it and start over --- .gitmodules | 3 - RobotsTxt.hs | 84 - SitemapXml.hs | 105 - article.php | 50 + articles/beyond-operating-systems/index.xhtml | 187 + includes/parsedown.php | 1548 +++++ index.xhtml | 38 +- index.xhtml.old | 79 + menukill.xhtml | 77 + res/common.css | 80 +- res/common.css.old | 171 + resume.docx | Bin 0 -> 10663 bytes resume.odt | Bin 0 -> 17872 bytes resume.xhtml | 63 + resume2.txt | 148 + resume3.docx | Bin 0 -> 13041 bytes rkt/robots.rkt | 59 - rkt/site.rkt | 15 - rkt/sitemap.rkt | 26 - rkt/web.rkt | 73 - scr/leksah0.png | Bin 0 -> 28178 bytes scr/leksah0.txt | 142 + scr/leksah1.png | Bin 0 -> 149883 bytes scr/leksah1.txt | 5536 +++++++++++++++++ scr/leksah2.png | Bin 0 -> 21562 bytes scr/leksah3.png | Bin 0 -> 158260 bytes scr/leksah3.txt | 85 + scr/leksaha0.png | Bin 0 -> 10220 bytes scr/leksaha1.png | Bin 0 -> 32452 bytes sitemap.xml | 6 + switteprim.txt | 296 + template.xhtml | 65 + xexprs | 1 - 33 files changed, 8506 insertions(+), 431 deletions(-) delete mode 100644 RobotsTxt.hs delete mode 100644 SitemapXml.hs create mode 100644 article.php create mode 100644 articles/beyond-operating-systems/index.xhtml create mode 100644 includes/parsedown.php create mode 100755 index.xhtml.old create mode 100755 menukill.xhtml create mode 100644 res/common.css.old create mode 100644 resume.docx create mode 100644 resume.odt create mode 100644 resume.xhtml create mode 100644 resume2.txt create mode 100644 resume3.docx delete mode 100644 rkt/robots.rkt delete mode 100644 rkt/site.rkt delete mode 100644 rkt/sitemap.rkt delete mode 100644 rkt/web.rkt create mode 100644 scr/leksah0.png create mode 100644 scr/leksah0.txt create mode 100644 scr/leksah1.png create mode 100644 scr/leksah1.txt create mode 100644 scr/leksah2.png create mode 100644 scr/leksah3.png create mode 100644 scr/leksah3.txt create mode 100644 scr/leksaha0.png create mode 100644 scr/leksaha1.png create mode 100644 switteprim.txt create mode 100755 template.xhtml delete mode 160000 xexprs diff --git a/.gitmodules b/.gitmodules index 8cd875f..e69de29 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "xexprs"] - path = xexprs - url = https://github.com/lijerom/xexprs diff --git a/RobotsTxt.hs b/RobotsTxt.hs deleted file mode 100644 index 5c1da2c..0000000 --- a/RobotsTxt.hs +++ /dev/null @@ -1,84 +0,0 @@ -module RobotsTxt ( defaultRobotsTxt - , generateRobotsTxt - , forbidUrl - , forbidBotUrls - , withCrawlDelay - , withCanonicalDomain - , withSitemap - , usingDefaultSitemap - ) where - -type Seconds = Int -type DomainName = String -type Url = String -type UserAgent = String - -data RobotsTxt = RobotsTxt - { crawlDelay :: Seconds - , canonicalDomain :: Maybe DomainName - , sitemapLocation :: Maybe Url - , globalDisallows :: [Url] - , botDisallows :: [(UserAgent, [Url])] - } - -defaultRobotsTxt :: RobotsTxt -defaultRobotsTxt = RobotsTxt - { crawlDelay = 10 - , canonicalDomain = Nothing - , sitemapLocation = Nothing - , globalDisallows = [] - , botDisallows = [] - } - -forbidUrl :: Url -> RobotsTxt -> RobotsTxt -forbidUrl url cnf = cnf { globalDisallows = url : globalDisallows cnf } - -forbidBotUrls :: (UserAgent, [Url]) -> RobotsTxt -> RobotsTxt -forbidBotUrls forbid cnf = cnf { botDisallows = forbid : botDisallows cnf } - -withCrawlDelay :: Seconds -> RobotsTxt -> RobotsTxt -withCrawlDelay time cnf = cnf { crawlDelay = time } - -withCanonicalDomain :: String -> RobotsTxt -> RobotsTxt -withCanonicalDomain domain cnf = cnf { canonicalDomain = Just domain } - -withSitemap :: String -> RobotsTxt -> RobotsTxt -withSitemap url cnf = cnf { sitemapLocation = Just url } - -usingDefaultSitemap :: RobotsTxt -> RobotsTxt -usingDefaultSitemap cnf = cnf { sitemapLocation = fmap (++ "/sitemap.xml") $ canonicalDomain cnf } - -robotsTxtField :: String -> String -> String -robotsTxtField name value = name ++ ": " ++ value ++ "\n" - -robotsTxtEmptyField :: String -> String -robotsTxtEmptyField name = name ++ ":" - -globalUserAgent :: String -globalUserAgent = "*" - -userAgentField :: UserAgent -> String -userAgentField = robotsTxtField "User-agent" - -crawlDelayField :: Seconds -> String -crawlDelayField = robotsTxtField "Crawl-delay" . show - -canonicalDomainField :: DomainName -> String -canonicalDomainField = robotsTxtField "Host" - -disallowField :: Url -> String -disallowField = robotsTxtField "Disallow" - -generateDisallowList :: [Url] -> String -generateDisallowList [] = robotsTxtEmptyField "Disallow" -generateDisallowList xs = foldl1 (++) $ map disallowField xs - -generateBotDisallowList :: (UserAgent, [Url]) -> String -generateBotDisallowList (bot, urls) = userAgentField bot ++ generateDisallowList urls - -generateRobotsTxt :: RobotsTxt -> String -generateRobotsTxt config = (userAgentField globalUserAgent) - ++ (crawlDelayField $ crawlDelay config) - ++ (maybe "" canonicalDomainField $ canonicalDomain config) - ++ (generateDisallowList $ globalDisallows config) - ++ (foldl1 (++) $ map generateBotDisallowList $ botDisallows config) diff --git a/SitemapXml.hs b/SitemapXml.hs deleted file mode 100644 index c7abcff..0000000 --- a/SitemapXml.hs +++ /dev/null @@ -1,105 +0,0 @@ -module SitemapXml - ( ChangeFreq - , mkPriority - , defaultPriority - , defaultUrlData - , withPriority - , withLastMod - , withChangeFreq - , generateSitemapXml - ) where - -import Text.Printf (printf) - -type Sitemap = [UrlData] - -data ChangeFreq = CFNever - | CFYearly - | CFMonthly - | CFWeekly - | CFDaily - | CFHourly - | CFAlways - -instance Show ChangeFreq where - show CFNever = "never" - show CFYearly = "yearly" - show CFMonthly = "monthly" - show CFWeekly = "weekly" - show CFDaily = "daily" - show CFHourly = "hourly" - show CFAlways = "always" - -data Priority = Priority Int - -instance Show Priority where - -- There is probably a better way to do this - show (Priority x) = printf "%.1f" (fromIntegral x / 10 :: Float) - -mkPriority :: Int -> Priority -mkPriority x | x >= 0 && x <= 10 = Priority x - -defaultPriority :: Priority -defaultPriority = mkPriority 5 - -data UrlData = UrlData - { url :: String - , lastMod :: Maybe String - , changeFreq :: Maybe ChangeFreq - , priority :: Priority - } - -defaultUrlData :: String -> UrlData -defaultUrlData url = UrlData { url = url, lastMod = Nothing, changeFreq = Nothing, priority = defaultPriority } - -withPriority :: Int -> UrlData -> UrlData -withPriority x dat = dat { priority = mkPriority x } - -withLastMod :: String -> UrlData -> UrlData -withLastMod x dat = dat { lastMod = Just x } - -withChangeFreq :: ChangeFreq -> UrlData -> UrlData -withChangeFreq x dat = dat { changeFreq = Just x } - --- I know there are Xml generation libraries, but it's not worth their inclusion --- over such a trivial application at this point -data Xml = Tag String [(String, String)] [Xml] | Data String - -renderAttribute :: (String, String) -> String -renderAttribute (name, value) = name ++ "=\"" ++ value ++ "\"" - -xmlComment :: String -xmlComment = "" - -renderXml :: Xml -> String -renderXml (Data x) = x -renderXml (Tag name attrs body) = openTag - ++ renderedBody - ++ closeTag - where openTag = "<" ++ name ++ " " ++ attributes ++ ">" - attributes = unwords $ map renderAttribute attrs - renderedBody = foldl1 (++) $ map renderXml body - closeTag = "" - -tagNoAttrs :: String -> [Xml] -> Xml -tagNoAttrs name body = Tag name [] body - -tagOneBody :: String -> Xml -> Xml -tagOneBody name body = tagNoAttrs name [body] - -maybeList :: Maybe a -> [a] -maybeList Nothing = [] -maybeList (Just x) = [x] - -urlDataToXml :: UrlData -> Xml -urlDataToXml dat = tagNoAttrs "url" $ locTag ++ priorityTag ++ lastModTag ++ changeFreqTag - where locTag = [tagOneBody "loc" $ Data $ url dat] - priorityTag = [tagOneBody "priority" $ Data $ show $ priority dat] - lastModTag = maybeList $ fmap (tagOneBody "lastmod" . Data) $ lastMod dat - changeFreqTag = maybeList $ fmap (tagOneBody "changefreq" . Data . show) $ changeFreq dat - -sitemapToXml :: Sitemap -> Xml -sitemapToXml = Tag "urlset" [("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9")] . map urlDataToXml - -generateSitemapXml :: Sitemap -> String -generateSitemapXml sitemap = xmlComment ++ (renderXml $ sitemapToXml sitemap) diff --git a/article.php b/article.php new file mode 100644 index 0000000..16d3b13 --- /dev/null +++ b/article.php @@ -0,0 +1,50 @@ + + + + + + + + + + <?php echo $article['title'] ?> - Lijero + + + + + + + +
+
+

diff --git a/articles/beyond-operating-systems/index.xhtml b/articles/beyond-operating-systems/index.xhtml new file mode 100644 index 0000000..9815219 --- /dev/null +++ b/articles/beyond-operating-systems/index.xhtml @@ -0,0 +1,187 @@ + + + + + + + + + + + Beyond Operating Systems - Lijero + + + + + + + + + + +
+
+

Beyond Operating Systems - Abstracting Over Networks

+ +
+

Introduction

+

+ I've come to get my crazy idea smashed apart. Or open an innovative discussion! Whatever it is, I don't wanna waste your time so I'll be brief. Let me know if anything needs clarification, since I'm shrinking a couple notebooks into one article. +

+

Programs running on the internet itself

+

+ I want to write software for the whole internet! That can mean a lot of things, though: +

    +
  • Websites without a host
  • +
  • Multiplayer games and apps without even thinking about servers
  • +
  • Easy distributed stuff like cryptocurrencies
  • +
+

+

+ Operating systems mean we can write software for any computer but I want to write software for every computer at once! A globally distributed operating system. +

+

Building up to a global OS

+

+ It's gonna take a lot of layers of abstraction. Bear with me, I'll get there eventually! +

+

Step 1: The Resource Graph

+

+ If you're going to write a distributed operating system, it better not matter where data comes from. So unify every resource, from memory to files to HTTP calls, into a resource graph. That said, you can't make assumptions about your surroundings either: implicit dependencies have got to go. +

+

Unifying resources

+

+ We still need to know what data is, which can be pretty tough when you don't know where it's coming from. The solution is an extremely strong type system. The type system tells software what data actually is. That said, different resources have different properties, so this has to be expressed in the type system as well. +

+

Killing implicit dependencies

+

+ This is where the resource graph comes in. A graph is just a general way to structure data. It's basically a generalized filesystem. The important difference is that there is no root. We get data around by building, rebuilding, and passing resource graphs, rather than ACL on a general filesystem or whatever. We pass around references. +

+

Programming with a resource graph

+

+ Today's languages are not well-suited to this model of data. Neither are computers: you can't have a pointer to an HTTP resource. Also, it needs to be enforced, so RIP native binaries. Not that you could have them anyway, since the internet runs on a loot of architectures. Instead, you'd need a bytecode interpreter that can actually handle it all natively. +

+

+ Also, I swear I am not a Lisp shill and I had no intention of it, but Lisp happens to be really good at dealing with linked data structures. It'd probably be really convenient for dealing with this sort of thing. Though this system is strongly typed, unlike Lisp. +

+

There's more to resources than CRUD

+

+ There needs to be an actual way to implement all these fancy types of nodes. And how can we not care about the source of something being HTTP if we need to make a query? The solution is simple: make every node a computation. And by computation I mean closure. +

+

+ I mean, how did you think the nodes were implemented? Most nodes are actually a procedure to fetch the requested content. But you can also make nodes with inputs and outputs, such as an HTTP query. Of course, we need to know where we're getting the data from, so that must have been put in earlier. The resources with that information have been enclosed in the node. +

+

+ Nodes are functions. They're partially applied with a portion of the graph they require to make closures. In fact, functions are nodes too. So are all processes. You pass in a parameter graph and get back data. +

+

+ Now I hope it makes sense how we can have all the features of a kernel without syscalls. Your malloc or whatever is inclosed with the relevant information, including any syncronization references. +

+

Step 2: Computational Economy

+

+ So what if we assign an expense to a function? We can count instructions, give them different expenses, and sum them up to get a final price. We can calculate the range of potential prices by calculating branches as lumps and adding them each time a branch is taken. From here, we can extend it to the cost of data (e.g. memory) by calculating quantity of data over computational time. Bandwidth costs are obvious too. This is how you can implement schedulers, when you expose the interpreter as a resource. +

+

What about the halting problem?

+

+ Totality proofs (manual or automatic), and relating expense to the input. Where it cannot be proven, the maximum expense can be considered infinite. In many of those cases, it would make sense to put an upper bound on the amount you're willing to pay to run a function. +

+

Paying for our remote access

+

+ Servers can also assign an expense to queries if you modified e.g. HTTP to do it. HTTP is just a kind of RPC anyway, and it now behaves exactly like one in our resource graph. Now you can pay them for your access to their resource graph! +

+ We've now turned computational expense into a currency! +

+ How cryptocurrencies are implemented is out of the scope of this article, but we can now turn this into one, and trade our currency for computation. +

+ +But to continue, if accessing someone else's resources has a cost, we should probably be paying for it, right? Paying for goods and services. Seems familiar. Maybe our "money" really is just that-- a currency. Are y'all familiar with cryptocurrencies? Because we're well on our way to making one. Explaining how blockchains like bitcoin work is waay out of the scope of this post (or perhaps not-- but at any rate, it's too long to explain in this one), but to SUPER summarize it, we can use cryptographic mAgIc to sell portions of transactions and stuff with cryptographic proof, tl;dr a distributed currency. I'll have to explain how it works, and how you can make contracts to prevent scams and stuff, and how to deal with redundant computation in a different post, because you have no idea just how much further I can push this (i.e. I don't have time for that sort of digression). + +The end result is that your pair of computers can trade resources and do all sorts of crazy stuff all beneath the nose of the program itself. This can be generalized to a more sensible system by decoupling the e.g. local per-instruction expense and currency to allow competition between suppliers, but that's pretty complicated too, and I want to stick to the realm of abstractions, rather than defining the economic system. Anyway, from there you can just extend this abstraction over an entire network of computers, and buy/sell resources as needed. You're probably seeing a lot of issues at this point (e.g. what if the other computers lie, what if they drop my data, what about latency, what about network partitions, what if they steal my data, how do I deal with all of these transactions in a performant matter), but don't worry, I'll get to them later. Actually, there are going to be a /lot/ of places coming up where I'll have to get to it later, so I'm going to stop giving this notice, but I will cover them. Also, if you're thinking, "this keeps sounding less and less like osdev", you're right. I'm no longer strictly discussing operating systems-- I've generalized the concept of an operating system, which abstracts over hardware and other such things, to an entire network. + +Now that's a pretty big claim, but none of what I've said so far is all that impressive. Most of us have enough power on our computers not to need to buy it, and just doing these tasks the old-fashioned way is a heck of a lot easier for these benefits so far (though before I got so far out, the ideas still in the realm of typical operating systems is more justification than a lot of hobby OSes). The thing is, I'm claiming to abstract over the internet, but really all I've talked about is loaning resources and paying for data. Applications haven't changed that much, only their execution platform, and a couple of conveniences. For example, your HTTP server still holds all your data, you're just getting paid for holding it (though you can pay other people to act like a CDN). The issue is that while the computation is distributed and that space can be loaned, data is still fundamentally centralized. Sure, it's over a bunch of computers, but there's no concept of shared data. Your applications can run all over the internet, but not on it. + +

Running ON the Internet -- Fully distributed applications

+Now we're finally at my point. What I want is to be able to write fully distributed multi-user applications in a similar way to how we write standard applications now. There shouldn't be a server or host or central authority, you shouldn't have to deal with figuring out where data is stored, you shouldn't have to figure out the fine details of protocols, and such things. Publishing pages or files Web 1.0-style shouldn't require any hosting, and all data should receive the benefits of torrenting automatically. Interactive content (web 2.0, IRC, etc) should behave similarly. Games shouldn't need to worry about hosting (all multiplayer games should be as easy as LAN hosting is today, and large servers should be a hell of a lot cheaper i.e. free). A distributed data store. + +

Getting back to details

+If you can't think of a billion potential issues with this, I'm disappointed in you. But don't worry, I've reached peak abstraction, and now I can start working my way back down into details and issues. I'm probably going to go from easier issues to harder issues and low-level issues to high-level issues, just fyi. I know this is written like an FAQ but I keep building on important details here. + +* Aren't interpreters slow? How is it a good idea to run your entire operating system on them? +They are typically slow, but as they're the core of the entire everything, a lot of optimization would go into it. It'd probably be rather low-level bytecode, and have an extremely efficient interpreter. Some degree of JITting would probably occur, when there is very high confidence it won't open up a bug. Since resources are managed in a graph and implicit dependencies are impossible, I'd assume people could take advantage of these properties to achieve an extremely high level of parallelism, like they do in functional programming languages. + +* How would it be safe to run unknown code on your computer? +It's not, but you're probably doing it right now with your browser. There's the obvious distinction between going to trusted websites and getting pushed data from strangers, though. There's some inevitable risk in any internet connection, and the best you can do is minimize that risk. I would try to keep the inner interpreter extremely simple and small, perhaps even going as far as to formally verify it, to prevent exploits; JITting should be used with extreme caution; I would sandbox processes pushed to me when possible; and I would also try to take the precautions used by OSes such as OpenBSD. Overall though, I'm reasonably confident in it, and the complete lack of implicit dependencies makes it a hell of a lot more secure than running random executables, even sandboxed ones, and brings it closer to e.g. JS. The language wouldn't even deal with numeric pointers (to real memory, not as in the concept), to prevent accidental pointer arithmetic bugs. + +

How do I access raw resources from the interpreted language?

+The interpreter would pass in operations for raw resource access into the boot program, which can then create closures wrapping these resources (e.g. a memory allocator, a partition reader, other device wrappers) and keep building abstractions on these, with only the abstractions being included in the resource graph for normal programs. How these raw resources are provided is an implementation detail. It could potentially involve bootstrap stages and assembly output. + +

Okay, well how do these abstractions work? What is a graph node anyhow?

+Each node is essentially a function call, though most of the actual function calls would be optimized away. You pass in a graph with the correct data types, and assign the result to another local graph node. The closures are actually more like partially applied functions in this sense, since the graph has to be explicitly passed in and must have exactly the required functions and nothing more, but I call them closures because it "captures" the resource access primitives from the creator, and then gets given actual input later. Resources like an HTTP call are essentially just lazily-evaluated procedures. + +

How is it performant to have a program distributed over multiple computers? How does the network manage latency and throughput?

+Usually, it isn't. Loaning resources isn't the point, it's just a necessary abstraction to build the rest of the network, for things like contracts, and managing the distributed data store. Usually, the actual computation and its related data will be transferred as a block (lazily, of course) to the actual place of execution, and only independent batch jobs will be transferred. A computer would rarely actually pay for a computation unless necessary (think swap space), and will do computations locally when possible, and local-initiated computations always take priority over sold computations. There are only two purposes other than for internal infrastructure and massively distributed computation projects: conserving battery life, and accessing remote resources. Often it doesn't make sense to download large portions of a database when the content you actually want is a lot smaller, so you just pay someone who already has it to do it for you. If this is a common case and it gets overwhelmed, its own price goes up until someone else finds it cheaper to grab the data than pay for it, and then you have two cheap servers. They don't have to maintain a clone of the database obviously, but in most cases, for a commonly-accessed resource, it makes sense because you can resell (seed) the data yourself, or you'll want to retrieve it again and have it there. This is how static (as opposed to stateful, not dynamic) data propagates through the network. You can tell whether something is common by announcing you have it, and holding onto it. This means that the more popular a resource is, the faster and cheaper it becomes to retrieve because more people have it. If it becomes less popular, or otherwise overhosted, people will automatically drop it because it's no longer profitable to host. Additionally, the more people host something, the more likely there is a version close to you, which reduces latency. This is especially true of geographically popular data. Beyond that, it is trivial to chunk data, so that the end users receive all data like a bittorrent. Through these mechanisms, static data would be much faster than the normal internet, since all data behaves like a torrent or CDN. Stateful data still receives many of these benefits, but that'll have to wait for later. + +I had to take a break from writing this post, so hopefully I don't miss anything. I probably will, having lost my train of thought now. + +* Isn't it expensive to track computations like that / CPU cache & branch prediction? +You can calculate the length of each block in advance, and only need to add the sum of the block to the total when a branch is taken. Locally initiated code could under some circumstances be free and not need to be tracked at all. + +* Can this have any benefit to security, as far as local programs go? +Isolation of programs & capability-based security: no implicit dependencies or global resource graph to exploit. You can't traverse e.g. the whole filesystem because the concept of "the whole filesystem" isn't meaningful. + +

The implementation of distributed state

+Oh lord. Now I have to move onto the implementation of distributed state. I'm not really looking forward to this, since everything I've said so far is just the tip of the iceberg as far as details go. Most of my countless pages of notebook are trying to work around the insane difficulties of building a general case for distributed applications. Can't I just stick to hype? Shit. Man, and that's not even counting explaining the usual blockchain problems. + +

The guarentees of a distributed system

+ What we're essentially looking at is an extremely complex internet overlay network implemented on top of the operating system I've described so far, to provide guarantees about data. We have opened the gates of hell. I suppose I should start off by listing the properties that such a network needs to be able to have: +
    +
  • The typical cryptographic guarantees: confidentiality, integrity, availability, and non-repudiation
  • +
  • Agreement upon the order in which things occurred *with low latency* (FUCK the PACELC theorem). Sometimes a partial ordering is acceptable
  • +
  • Prove that things actually happened to peers who did not observe it (this is incredibly complex if you don't want to use blockchain) +
  • Separation of identity / pseudonymity / persistent identification: actually this is by far the easiest thing here +
  • The ability to locate and retrieve public data +
  • Anonymity (note: I'm not willing to even think about anonymity networks. I figure this is separation of identity + layering connections over I2P or some other existing anonymity network-- I2P is just built for this sort of thing though). +
  • Privacy of the data +
  • Provable secrets such as e.g. player position in an FPS +
  • Reforming the network in the case of a partition +
  • The ability to update the program while maintaining the same data store +
  • Guaranteeing consistent data across the entire network +
  • Preventing lying about data +
  • Separation of semantic units of data-- only perform necessary replication of calculations, and only providing the guarantees necessary for a particular block of data +
  • Resilience against censorship, malicious firewalls, DDOS, and such +
  • Continued functionality in high-latency and/or low-bandwidth environments, and unreliable connections +
  • Protection against spam and cheaters +
  • Multi-modality for when server architectures just work best for performance +
  • Prevention against data loss, especially for the ability to do stuff like long-term remote file hosting +
  • Plausible deniability
  • +
+
+ + + diff --git a/includes/parsedown.php b/includes/parsedown.php new file mode 100644 index 0000000..f5dd0fa --- /dev/null +++ b/includes/parsedown.php @@ -0,0 +1,1548 @@ +DefinitionData = array(); + + # standardize line breaks + $text = str_replace(array("\r\n", "\r"), "\n", $text); + + # remove surrounding line breaks + $text = trim($text, "\n"); + + # split text into lines + $lines = explode("\n", $text); + + # iterate through lines to identify blocks + $markup = $this->lines($lines); + + # trim line breaks + $markup = trim($markup, "\n"); + + return $markup; + } + + # + # Setters + # + + function setBreaksEnabled($breaksEnabled) + { + $this->breaksEnabled = $breaksEnabled; + + return $this; + } + + protected $breaksEnabled; + + function setMarkupEscaped($markupEscaped) + { + $this->markupEscaped = $markupEscaped; + + return $this; + } + + protected $markupEscaped; + + function setUrlsLinked($urlsLinked) + { + $this->urlsLinked = $urlsLinked; + + return $this; + } + + protected $urlsLinked = true; + + # + # Lines + # + + protected $BlockTypes = array( + '#' => array('Header'), + '*' => array('Rule', 'List'), + '+' => array('List'), + '-' => array('SetextHeader', 'Table', 'Rule', 'List'), + '0' => array('List'), + '1' => array('List'), + '2' => array('List'), + '3' => array('List'), + '4' => array('List'), + '5' => array('List'), + '6' => array('List'), + '7' => array('List'), + '8' => array('List'), + '9' => array('List'), + ':' => array('Table'), + '<' => array('Comment', 'Markup'), + '=' => array('SetextHeader'), + '>' => array('Quote'), + '[' => array('Reference'), + '_' => array('Rule'), + '`' => array('FencedCode'), + '|' => array('Table'), + '~' => array('FencedCode'), + ); + + # ~ + + protected $unmarkedBlockTypes = array( + 'Code', + ); + + # + # Blocks + # + + protected function lines(array $lines) + { + $CurrentBlock = null; + + foreach ($lines as $line) + { + if (chop($line) === '') + { + if (isset($CurrentBlock)) + { + $CurrentBlock['interrupted'] = true; + } + + continue; + } + + if (strpos($line, "\t") !== false) + { + $parts = explode("\t", $line); + + $line = $parts[0]; + + unset($parts[0]); + + foreach ($parts as $part) + { + $shortage = 4 - mb_strlen($line, 'utf-8') % 4; + + $line .= str_repeat(' ', $shortage); + $line .= $part; + } + } + + $indent = 0; + + while (isset($line[$indent]) and $line[$indent] === ' ') + { + $indent ++; + } + + $text = $indent > 0 ? substr($line, $indent) : $line; + + # ~ + + $Line = array('body' => $line, 'indent' => $indent, 'text' => $text); + + # ~ + + if (isset($CurrentBlock['continuable'])) + { + $Block = $this->{'block'.$CurrentBlock['type'].'Continue'}($Line, $CurrentBlock); + + if (isset($Block)) + { + $CurrentBlock = $Block; + + continue; + } + else + { + if ($this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + } + } + + # ~ + + $marker = $text[0]; + + # ~ + + $blockTypes = $this->unmarkedBlockTypes; + + if (isset($this->BlockTypes[$marker])) + { + foreach ($this->BlockTypes[$marker] as $blockType) + { + $blockTypes []= $blockType; + } + } + + # + # ~ + + foreach ($blockTypes as $blockType) + { + $Block = $this->{'block'.$blockType}($Line, $CurrentBlock); + + if (isset($Block)) + { + $Block['type'] = $blockType; + + if ( ! isset($Block['identified'])) + { + $Blocks []= $CurrentBlock; + + $Block['identified'] = true; + } + + if ($this->isBlockContinuable($blockType)) + { + $Block['continuable'] = true; + } + + $CurrentBlock = $Block; + + continue 2; + } + } + + # ~ + + if (isset($CurrentBlock) and ! isset($CurrentBlock['type']) and ! isset($CurrentBlock['interrupted'])) + { + $CurrentBlock['element']['text'] .= "\n".$text; + } + else + { + $Blocks []= $CurrentBlock; + + $CurrentBlock = $this->paragraph($Line); + + $CurrentBlock['identified'] = true; + } + } + + # ~ + + if (isset($CurrentBlock['continuable']) and $this->isBlockCompletable($CurrentBlock['type'])) + { + $CurrentBlock = $this->{'block'.$CurrentBlock['type'].'Complete'}($CurrentBlock); + } + + # ~ + + $Blocks []= $CurrentBlock; + + unset($Blocks[0]); + + # ~ + + $markup = ''; + + foreach ($Blocks as $Block) + { + if (isset($Block['hidden'])) + { + continue; + } + + $markup .= "\n"; + $markup .= isset($Block['markup']) ? $Block['markup'] : $this->element($Block['element']); + } + + $markup .= "\n"; + + # ~ + + return $markup; + } + + protected function isBlockContinuable($Type) + { + return method_exists($this, 'block'.$Type.'Continue'); + } + + protected function isBlockCompletable($Type) + { + return method_exists($this, 'block'.$Type.'Complete'); + } + + # + # Code + + protected function blockCode($Line, $Block = null) + { + if (isset($Block) and ! isset($Block['type']) and ! isset($Block['interrupted'])) + { + return; + } + + if ($Line['indent'] >= 4) + { + $text = substr($Line['body'], 4); + + $Block = array( + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => array( + 'name' => 'code', + 'text' => $text, + ), + ), + ); + + return $Block; + } + } + + protected function blockCodeContinue($Line, $Block) + { + if ($Line['indent'] >= 4) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['element']['text']['text'] .= "\n"; + + $text = substr($Line['body'], 4); + + $Block['element']['text']['text'] .= $text; + + return $Block; + } + } + + protected function blockCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Comment + + protected function blockComment($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (isset($Line['text'][3]) and $Line['text'][3] === '-' and $Line['text'][2] === '-' and $Line['text'][1] === '!') + { + $Block = array( + 'markup' => $Line['body'], + ); + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + } + + protected function blockCommentContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + $Block['markup'] .= "\n" . $Line['body']; + + if (preg_match('/-->$/', $Line['text'])) + { + $Block['closed'] = true; + } + + return $Block; + } + + # + # Fenced Code + + protected function blockFencedCode($Line) + { + if (preg_match('/^['.$Line['text'][0].']{3,}[ ]*([\w-]+)?[ ]*$/', $Line['text'], $matches)) + { + $Element = array( + 'name' => 'code', + 'text' => '', + ); + + if (isset($matches[1])) + { + $class = 'language-'.$matches[1]; + + $Element['attributes'] = array( + 'class' => $class, + ); + } + + $Block = array( + 'char' => $Line['text'][0], + 'element' => array( + 'name' => 'pre', + 'handler' => 'element', + 'text' => $Element, + ), + ); + + return $Block; + } + } + + protected function blockFencedCodeContinue($Line, $Block) + { + if (isset($Block['complete'])) + { + return; + } + + if (isset($Block['interrupted'])) + { + $Block['element']['text']['text'] .= "\n"; + + unset($Block['interrupted']); + } + + if (preg_match('/^'.$Block['char'].'{3,}[ ]*$/', $Line['text'])) + { + $Block['element']['text']['text'] = substr($Block['element']['text']['text'], 1); + + $Block['complete'] = true; + + return $Block; + } + + $Block['element']['text']['text'] .= "\n".$Line['body']; + + return $Block; + } + + protected function blockFencedCodeComplete($Block) + { + $text = $Block['element']['text']['text']; + + $text = htmlspecialchars($text, ENT_NOQUOTES, 'UTF-8'); + + $Block['element']['text']['text'] = $text; + + return $Block; + } + + # + # Header + + protected function blockHeader($Line) + { + if (isset($Line['text'][1])) + { + $level = 1; + + while (isset($Line['text'][$level]) and $Line['text'][$level] === '#') + { + $level ++; + } + + if ($level > 6) + { + return; + } + + $text = trim($Line['text'], '# '); + + $Block = array( + 'element' => array( + 'name' => 'h' . min(6, $level), + 'text' => $text, + 'handler' => 'line', + ), + ); + + return $Block; + } + } + + # + # List + + protected function blockList($Line) + { + list($name, $pattern) = $Line['text'][0] <= '-' ? array('ul', '[*+-]') : array('ol', '[0-9]+[.]'); + + if (preg_match('/^('.$pattern.'[ ]+)(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'indent' => $Line['indent'], + 'pattern' => $pattern, + 'element' => array( + 'name' => $name, + 'handler' => 'elements', + ), + ); + + if($name === 'ol') + { + $listStart = stristr($matches[0], '.', true); + + if($listStart !== '1') + { + $Block['element']['attributes'] = array('start' => $listStart); + } + } + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $matches[2], + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + } + + protected function blockListContinue($Line, array $Block) + { + if ($Block['indent'] === $Line['indent'] and preg_match('/^'.$Block['pattern'].'(?:[ ]+(.*)|$)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['li']['text'] []= ''; + + unset($Block['interrupted']); + } + + unset($Block['li']); + + $text = isset($matches[1]) ? $matches[1] : ''; + + $Block['li'] = array( + 'name' => 'li', + 'handler' => 'li', + 'text' => array( + $text, + ), + ); + + $Block['element']['text'] []= & $Block['li']; + + return $Block; + } + + if ($Line['text'][0] === '[' and $this->blockReference($Line)) + { + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + return $Block; + } + + if ($Line['indent'] > 0) + { + $Block['li']['text'] []= ''; + + $text = preg_replace('/^[ ]{0,4}/', '', $Line['body']); + + $Block['li']['text'] []= $text; + + unset($Block['interrupted']); + + return $Block; + } + } + + # + # Quote + + protected function blockQuote($Line) + { + if (preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + $Block = array( + 'element' => array( + 'name' => 'blockquote', + 'handler' => 'lines', + 'text' => (array) $matches[1], + ), + ); + + return $Block; + } + } + + protected function blockQuoteContinue($Line, array $Block) + { + if ($Line['text'][0] === '>' and preg_match('/^>[ ]?(.*)/', $Line['text'], $matches)) + { + if (isset($Block['interrupted'])) + { + $Block['element']['text'] []= ''; + + unset($Block['interrupted']); + } + + $Block['element']['text'] []= $matches[1]; + + return $Block; + } + + if ( ! isset($Block['interrupted'])) + { + $Block['element']['text'] []= $Line['text']; + + return $Block; + } + } + + # + # Rule + + protected function blockRule($Line) + { + if (preg_match('/^(['.$Line['text'][0].'])([ ]*\1){2,}[ ]*$/', $Line['text'])) + { + $Block = array( + 'element' => array( + 'name' => 'hr' + ), + ); + + return $Block; + } + } + + # + # Setext + + protected function blockSetextHeader($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (chop($Line['text'], $Line['text'][0]) === '') + { + $Block['element']['name'] = $Line['text'][0] === '=' ? 'h1' : 'h2'; + + return $Block; + } + } + + # + # Markup + + protected function blockMarkup($Line) + { + if ($this->markupEscaped) + { + return; + } + + if (preg_match('/^<(\w*)(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*(\/)?>/', $Line['text'], $matches)) + { + $element = strtolower($matches[1]); + + if (in_array($element, $this->textLevelElements)) + { + return; + } + + $Block = array( + 'name' => $matches[1], + 'depth' => 0, + 'markup' => $Line['text'], + ); + + $length = strlen($matches[0]); + + $remainder = substr($Line['text'], $length); + + if (trim($remainder) === '') + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + $Block['closed'] = true; + + $Block['void'] = true; + } + } + else + { + if (isset($matches[2]) or in_array($matches[1], $this->voidElements)) + { + return; + } + + if (preg_match('/<\/'.$matches[1].'>[ ]*$/i', $remainder)) + { + $Block['closed'] = true; + } + } + + return $Block; + } + } + + protected function blockMarkupContinue($Line, array $Block) + { + if (isset($Block['closed'])) + { + return; + } + + if (preg_match('/^<'.$Block['name'].'(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*>/i', $Line['text'])) # open + { + $Block['depth'] ++; + } + + if (preg_match('/(.*?)<\/'.$Block['name'].'>[ ]*$/i', $Line['text'], $matches)) # close + { + if ($Block['depth'] > 0) + { + $Block['depth'] --; + } + else + { + $Block['closed'] = true; + } + } + + if (isset($Block['interrupted'])) + { + $Block['markup'] .= "\n"; + + unset($Block['interrupted']); + } + + $Block['markup'] .= "\n".$Line['body']; + + return $Block; + } + + # + # Reference + + protected function blockReference($Line) + { + if (preg_match('/^\[(.+?)\]:[ ]*?(?:[ ]+["\'(](.+)["\')])?[ ]*$/', $Line['text'], $matches)) + { + $id = strtolower($matches[1]); + + $Data = array( + 'url' => $matches[2], + 'title' => null, + ); + + if (isset($matches[3])) + { + $Data['title'] = $matches[3]; + } + + $this->DefinitionData['Reference'][$id] = $Data; + + $Block = array( + 'hidden' => true, + ); + + return $Block; + } + } + + # + # Table + + protected function blockTable($Line, array $Block = null) + { + if ( ! isset($Block) or isset($Block['type']) or isset($Block['interrupted'])) + { + return; + } + + if (strpos($Block['element']['text'], '|') !== false and chop($Line['text'], ' -:|') === '') + { + $alignments = array(); + + $divider = $Line['text']; + + $divider = trim($divider); + $divider = trim($divider, '|'); + + $dividerCells = explode('|', $divider); + + foreach ($dividerCells as $dividerCell) + { + $dividerCell = trim($dividerCell); + + if ($dividerCell === '') + { + continue; + } + + $alignment = null; + + if ($dividerCell[0] === ':') + { + $alignment = 'left'; + } + + if (substr($dividerCell, - 1) === ':') + { + $alignment = $alignment === 'left' ? 'center' : 'right'; + } + + $alignments []= $alignment; + } + + # ~ + + $HeaderElements = array(); + + $header = $Block['element']['text']; + + $header = trim($header); + $header = trim($header, '|'); + + $headerCells = explode('|', $header); + + foreach ($headerCells as $index => $headerCell) + { + $headerCell = trim($headerCell); + + $HeaderElement = array( + 'name' => 'th', + 'text' => $headerCell, + 'handler' => 'line', + ); + + if (isset($alignments[$index])) + { + $alignment = $alignments[$index]; + + $HeaderElement['attributes'] = array( + 'style' => 'text-align: '.$alignment.';', + ); + } + + $HeaderElements []= $HeaderElement; + } + + # ~ + + $Block = array( + 'alignments' => $alignments, + 'identified' => true, + 'element' => array( + 'name' => 'table', + 'handler' => 'elements', + ), + ); + + $Block['element']['text'] []= array( + 'name' => 'thead', + 'handler' => 'elements', + ); + + $Block['element']['text'] []= array( + 'name' => 'tbody', + 'handler' => 'elements', + 'text' => array(), + ); + + $Block['element']['text'][0]['text'] []= array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $HeaderElements, + ); + + return $Block; + } + } + + protected function blockTableContinue($Line, array $Block) + { + if (isset($Block['interrupted'])) + { + return; + } + + if ($Line['text'][0] === '|' or strpos($Line['text'], '|')) + { + $Elements = array(); + + $row = $Line['text']; + + $row = trim($row); + $row = trim($row, '|'); + + preg_match_all('/(?:(\\\\[|])|[^|`]|`[^`]+`|`)+/', $row, $matches); + + foreach ($matches[0] as $index => $cell) + { + $cell = trim($cell); + + $Element = array( + 'name' => 'td', + 'handler' => 'line', + 'text' => $cell, + ); + + if (isset($Block['alignments'][$index])) + { + $Element['attributes'] = array( + 'style' => 'text-align: '.$Block['alignments'][$index].';', + ); + } + + $Elements []= $Element; + } + + $Element = array( + 'name' => 'tr', + 'handler' => 'elements', + 'text' => $Elements, + ); + + $Block['element']['text'][1]['text'] []= $Element; + + return $Block; + } + } + + # + # ~ + # + + protected function paragraph($Line) + { + $Block = array( + 'element' => array( + 'name' => 'p', + 'text' => $Line['text'], + 'handler' => 'line', + ), + ); + + return $Block; + } + + # + # Inline Elements + # + + protected $InlineTypes = array( + '"' => array('SpecialCharacter'), + '!' => array('Image'), + '&' => array('SpecialCharacter'), + '*' => array('Emphasis'), + ':' => array('Url'), + '<' => array('UrlTag', 'EmailTag', 'Markup', 'SpecialCharacter'), + '>' => array('SpecialCharacter'), + '[' => array('Link'), + '_' => array('Emphasis'), + '`' => array('Code'), + '~' => array('Strikethrough'), + '\\' => array('EscapeSequence'), + ); + + # ~ + + protected $inlineMarkerList = '!"*_&[:<>`~\\'; + + # + # ~ + # + + public function line($text) + { + $markup = ''; + + # $excerpt is based on the first occurrence of a marker + + while ($excerpt = strpbrk($text, $this->inlineMarkerList)) + { + $marker = $excerpt[0]; + + $markerPosition = strpos($text, $marker); + + $Excerpt = array('text' => $excerpt, 'context' => $text); + + foreach ($this->InlineTypes[$marker] as $inlineType) + { + $Inline = $this->{'inline'.$inlineType}($Excerpt); + + if ( ! isset($Inline)) + { + continue; + } + + # makes sure that the inline belongs to "our" marker + + if (isset($Inline['position']) and $Inline['position'] > $markerPosition) + { + continue; + } + + # sets a default inline position + + if ( ! isset($Inline['position'])) + { + $Inline['position'] = $markerPosition; + } + + # the text that comes before the inline + $unmarkedText = substr($text, 0, $Inline['position']); + + # compile the unmarked text + $markup .= $this->unmarkedText($unmarkedText); + + # compile the inline + $markup .= isset($Inline['markup']) ? $Inline['markup'] : $this->element($Inline['element']); + + # remove the examined text + $text = substr($text, $Inline['position'] + $Inline['extent']); + + continue 2; + } + + # the marker does not belong to an inline + + $unmarkedText = substr($text, 0, $markerPosition + 1); + + $markup .= $this->unmarkedText($unmarkedText); + + $text = substr($text, $markerPosition + 1); + } + + $markup .= $this->unmarkedText($text); + + return $markup; + } + + # + # ~ + # + + protected function inlineCode($Excerpt) + { + $marker = $Excerpt['text'][0]; + + if (preg_match('/^('.$marker.'+)[ ]*(.+?)[ ]*(? strlen($matches[0]), + 'element' => array( + 'name' => 'code', + 'text' => $text, + ), + ); + } + } + + protected function inlineEmailTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<((mailto:)?\S+?@\S+?)>/i', $Excerpt['text'], $matches)) + { + $url = $matches[1]; + + if ( ! isset($matches[2])) + { + $url = 'mailto:' . $url; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $matches[1], + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + protected function inlineEmphasis($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + $marker = $Excerpt['text'][0]; + + if ($Excerpt['text'][1] === $marker and preg_match($this->StrongRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'strong'; + } + elseif (preg_match($this->EmRegex[$marker], $Excerpt['text'], $matches)) + { + $emphasis = 'em'; + } + else + { + return; + } + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => $emphasis, + 'handler' => 'line', + 'text' => $matches[1], + ), + ); + } + + protected function inlineEscapeSequence($Excerpt) + { + if (isset($Excerpt['text'][1]) and in_array($Excerpt['text'][1], $this->specialCharacters)) + { + return array( + 'markup' => $Excerpt['text'][1], + 'extent' => 2, + ); + } + } + + protected function inlineImage($Excerpt) + { + if ( ! isset($Excerpt['text'][1]) or $Excerpt['text'][1] !== '[') + { + return; + } + + $Excerpt['text']= substr($Excerpt['text'], 1); + + $Link = $this->inlineLink($Excerpt); + + if ($Link === null) + { + return; + } + + $Inline = array( + 'extent' => $Link['extent'] + 1, + 'element' => array( + 'name' => 'img', + 'attributes' => array( + 'src' => $Link['element']['attributes']['href'], + 'alt' => $Link['element']['text'], + ), + ), + ); + + $Inline['element']['attributes'] += $Link['element']['attributes']; + + unset($Inline['element']['attributes']['href']); + + return $Inline; + } + + protected function inlineLink($Excerpt) + { + $Element = array( + 'name' => 'a', + 'handler' => 'line', + 'text' => null, + 'attributes' => array( + 'href' => null, + 'title' => null, + ), + ); + + $extent = 0; + + $remainder = $Excerpt['text']; + + if (preg_match('/\[((?:[^][]++|(?R))*+)\]/', $remainder, $matches)) + { + $Element['text'] = $matches[1]; + + $extent += strlen($matches[0]); + + $remainder = substr($remainder, $extent); + } + else + { + return; + } + + if (preg_match('/^[(]\s*+((?:[^ ()]++|[(][^ )]+[)])++)(?:[ ]+("[^"]*"|\'[^\']*\'))?\s*[)]/', $remainder, $matches)) + { + $Element['attributes']['href'] = $matches[1]; + + if (isset($matches[2])) + { + $Element['attributes']['title'] = substr($matches[2], 1, - 1); + } + + $extent += strlen($matches[0]); + } + else + { + if (preg_match('/^\s*\[(.*?)\]/', $remainder, $matches)) + { + $definition = strlen($matches[1]) ? $matches[1] : $Element['text']; + $definition = strtolower($definition); + + $extent += strlen($matches[0]); + } + else + { + $definition = strtolower($Element['text']); + } + + if ( ! isset($this->DefinitionData['Reference'][$definition])) + { + return; + } + + $Definition = $this->DefinitionData['Reference'][$definition]; + + $Element['attributes']['href'] = $Definition['url']; + $Element['attributes']['title'] = $Definition['title']; + } + + $Element['attributes']['href'] = str_replace(array('&', '<'), array('&', '<'), $Element['attributes']['href']); + + return array( + 'extent' => $extent, + 'element' => $Element, + ); + } + + protected function inlineMarkup($Excerpt) + { + if ($this->markupEscaped or strpos($Excerpt['text'], '>') === false) + { + return; + } + + if ($Excerpt['text'][1] === '/' and preg_match('/^<\/\w*[ ]*>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] === '!' and preg_match('/^/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + + if ($Excerpt['text'][1] !== ' ' and preg_match('/^<\w*(?:[ ]*'.$this->regexHtmlAttribute.')*[ ]*\/?>/s', $Excerpt['text'], $matches)) + { + return array( + 'markup' => $matches[0], + 'extent' => strlen($matches[0]), + ); + } + } + + protected function inlineSpecialCharacter($Excerpt) + { + if ($Excerpt['text'][0] === '&' and ! preg_match('/^&#?\w+;/', $Excerpt['text'])) + { + return array( + 'markup' => '&', + 'extent' => 1, + ); + } + + $SpecialCharacter = array('>' => 'gt', '<' => 'lt', '"' => 'quot'); + + if (isset($SpecialCharacter[$Excerpt['text'][0]])) + { + return array( + 'markup' => '&'.$SpecialCharacter[$Excerpt['text'][0]].';', + 'extent' => 1, + ); + } + } + + protected function inlineStrikethrough($Excerpt) + { + if ( ! isset($Excerpt['text'][1])) + { + return; + } + + if ($Excerpt['text'][1] === '~' and preg_match('/^~~(?=\S)(.+?)(?<=\S)~~/', $Excerpt['text'], $matches)) + { + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'del', + 'text' => $matches[1], + 'handler' => 'line', + ), + ); + } + } + + protected function inlineUrl($Excerpt) + { + if ($this->urlsLinked !== true or ! isset($Excerpt['text'][2]) or $Excerpt['text'][2] !== '/') + { + return; + } + + if (preg_match('/\bhttps?:[\/]{2}[^\s<]+\b\/*/ui', $Excerpt['context'], $matches, PREG_OFFSET_CAPTURE)) + { + $Inline = array( + 'extent' => strlen($matches[0][0]), + 'position' => $matches[0][1], + 'element' => array( + 'name' => 'a', + 'text' => $matches[0][0], + 'attributes' => array( + 'href' => $matches[0][0], + ), + ), + ); + + return $Inline; + } + } + + protected function inlineUrlTag($Excerpt) + { + if (strpos($Excerpt['text'], '>') !== false and preg_match('/^<(\w+:\/{2}[^ >]+)>/i', $Excerpt['text'], $matches)) + { + $url = str_replace(array('&', '<'), array('&', '<'), $matches[1]); + + return array( + 'extent' => strlen($matches[0]), + 'element' => array( + 'name' => 'a', + 'text' => $url, + 'attributes' => array( + 'href' => $url, + ), + ), + ); + } + } + + # ~ + + protected function unmarkedText($text) + { + if ($this->breaksEnabled) + { + $text = preg_replace('/[ ]*\n/', "
\n", $text); + } + else + { + $text = preg_replace('/(?:[ ][ ]+|[ ]*\\\\)\n/', "
\n", $text); + $text = str_replace(" \n", "\n", $text); + } + + return $text; + } + + # + # Handlers + # + + protected function element(array $Element) + { + $markup = '<'.$Element['name']; + + if (isset($Element['attributes'])) + { + foreach ($Element['attributes'] as $name => $value) + { + if ($value === null) + { + continue; + } + + $markup .= ' '.$name.'="'.$value.'"'; + } + } + + if (isset($Element['text'])) + { + $markup .= '>'; + + if (isset($Element['handler'])) + { + $markup .= $this->{$Element['handler']}($Element['text']); + } + else + { + $markup .= $Element['text']; + } + + $markup .= ''; + } + else + { + $markup .= ' />'; + } + + return $markup; + } + + protected function elements(array $Elements) + { + $markup = ''; + + foreach ($Elements as $Element) + { + $markup .= "\n" . $this->element($Element); + } + + $markup .= "\n"; + + return $markup; + } + + # ~ + + protected function li($lines) + { + $markup = $this->lines($lines); + + $trimmedMarkup = trim($markup); + + if ( ! in_array('', $lines) and substr($trimmedMarkup, 0, 3) === '

') + { + $markup = $trimmedMarkup; + $markup = substr($markup, 3); + + $position = strpos($markup, "

"); + + $markup = substr_replace($markup, '', $position, 4); + } + + return $markup; + } + + # + # Deprecated Methods + # + + function parse($text) + { + $markup = $this->text($text); + + return $markup; + } + + # + # Static Methods + # + + static function instance($name = 'default') + { + if (isset(self::$instances[$name])) + { + return self::$instances[$name]; + } + + $instance = new static(); + + self::$instances[$name] = $instance; + + return $instance; + } + + private static $instances = array(); + + # + # Fields + # + + protected $DefinitionData; + + # + # Read-Only + + protected $specialCharacters = array( + '\\', '`', '*', '_', '{', '}', '[', ']', '(', ')', '>', '#', '+', '-', '.', '!', '|', + ); + + protected $StrongRegex = array( + '*' => '/^[*]{2}((?:\\\\\*|[^*]|[*][^*]*[*])+?)[*]{2}(?![*])/s', + '_' => '/^__((?:\\\\_|[^_]|_[^_]*_)+?)__(?!_)/us', + ); + + protected $EmRegex = array( + '*' => '/^[*]((?:\\\\\*|[^*]|[*][*][^*]+?[*][*])+?)[*](?![*])/s', + '_' => '/^_((?:\\\\_|[^_]|__[^_]*__)+?)_(?!_)\b/us', + ); + + protected $regexHtmlAttribute = '[a-zA-Z_:][\w:.-]*(?:\s*=\s*(?:[^"\'=<>`\s]+|"[^"]*"|\'[^\']*\'))?'; + + protected $voidElements = array( + 'area', 'base', 'br', 'col', 'command', 'embed', 'hr', 'img', 'input', 'link', 'meta', 'param', 'source', + ); + + protected $textLevelElements = array( + 'a', 'br', 'bdo', 'abbr', 'blink', 'nextid', 'acronym', 'basefont', + 'b', 'em', 'big', 'cite', 'small', 'spacer', 'listing', + 'i', 'rp', 'del', 'code', 'strike', 'marquee', + 'q', 'rt', 'ins', 'font', 'strong', + 's', 'tt', 'kbd', 'mark', + 'u', 'xm', 'sub', 'nobr', + 'sup', 'ruby', + 'var', 'span', + 'wbr', 'time', + ); +} diff --git a/index.xhtml b/index.xhtml index 7543abf..529a43a 100755 --- a/index.xhtml +++ b/index.xhtml @@ -1,5 +1,7 @@ + + @@ -14,24 +16,34 @@ + +

Test Content

-

Summary

@@ -48,9 +60,15 @@ but this often comes at the cost of readability. My goal with this website is to

I have a bunch of content already, but I think a third paragraph would be nice too. In addition, this lets me intract with the website through scrolling, which could possibly make a difference, though I can't say for sure. Anyway, this content should help with both of these issues.

diff --git a/index.xhtml.old b/index.xhtml.old new file mode 100755 index 0000000..7ac4e21 --- /dev/null +++ b/index.xhtml.old @@ -0,0 +1,79 @@ + + + + + + + + + + + + + Lijero + + + + + + + + + + +
+
+

Test Content

+
+

Summary

+
+
To make an apple pie from scratch, you must first invent the universe.
+
~ Carl Sagan
+
+

NOTICE: I have some real content located at Beyond Operating Systems, though it is heavily WIP. +

+

+This is some test content. The purpose of this content is to demonstrate the readability of small-width, large-margined, well-spaced, large text. A lot of websites are extremely compact, +but this often comes at the cost of readability. My goal with this website is to provide an entirely different and more attractive user experience. +

+

Lorem Ipsum

+

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus

+

Extra Content

+

I have a bunch of content already, but I think a third paragraph would be nice too. In addition, this lets me intract with the website through scrolling, which could possibly make a difference, though I can't say for sure. Anyway, this content should help with both of these issues.

+
+
+ +
+ + diff --git a/menukill.xhtml b/menukill.xhtml new file mode 100755 index 0000000..95b09aa --- /dev/null +++ b/menukill.xhtml @@ -0,0 +1,77 @@ + + + + + + + + + + + + + Lijero + + + + + + + + + + +
+
+

Test Content

+
+

Summary

+
+
To make an apple pie from scratch, you must first invent the universe.
+
~ Carl Sagan
+
+

+This is some test content. The purpose of this content is to demonstrate the readability of small-width, large-margined, well-spaced, large text. A lot of websites are extremely compact, +but this often comes at the cost of readability. My goal with this website is to provide an entirely different and more attractive user experience. +

+

Lorem Ipsum

+

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus

+

Extra Content

+

I have a bunch of content already, but I think a third paragraph would be nice too. In addition, this lets me intract with the website through scrolling, which could possibly make a difference, though I can't say for sure. Anyway, this content should help with both of these issues.

+
+
+ +
+ + diff --git a/res/common.css b/res/common.css index 27d0508..5018fd6 100644 --- a/res/common.css +++ b/res/common.css @@ -18,6 +18,10 @@ nav { font-style: italic; } +nav li { + text-indent: 0; +} + nav ul { list-style: none; } @@ -31,9 +35,9 @@ article { } p { - text-align: justify; - text-justify: distribute; - text-indent: 4em; +/* text-align: justify; + text-justify: distribute;*/ + text-indent: 2em; } article h1 { @@ -48,6 +52,10 @@ article h3 { font-size: 20px; } +li { + text-indent: 1em; +} + a { text-decoration: none; color: #5050B0; @@ -91,6 +99,7 @@ footer { .license img { display: inline-block; + width: initial; vertical-align: bottom; } @@ -101,68 +110,29 @@ footer { } } -@media screen and (max-width: 1200px) { - nav { - margin: auto; - padding: 0; - text-align: center; - } +nav { + margin: auto; + padding: 0; + text-align: center; +} - nav ul { - padding: 0; - } +nav ul { + padding: 0; +} - nav li { - margin: 0; - display: inline-block; - } +nav li { + margin: 0; + display: inline-block; } @media screen and (min-width: 700px) { article { - padding: 30px 80px; + padding: 0 80px; min-width: 25em; - max-width: 30em; + max-width: 33em; } article h1 { margin-left: -20px; } } - -@media screen and (min-width: 1200px) { - nav { - max-width: 15%; - float: left; - padding: 20px 45px 40px 40px; - margin-top: 10px; - border-left: 3px solid; - } - - nav span { - padding-left: 20px; - } - - nav ul { - margin-left: 20px; - } - - nav li { - border-bottom: 1px solid #ccc; - padding: 3px; - } - - nav ul li:last-child { - border-bottom: none; - } - - .aside { - position: relative; - left: 60%; - float: right; - margin-left: 50%; - max-width: 50%; - } -} - - diff --git a/res/common.css.old b/res/common.css.old new file mode 100644 index 0000000..bc516e4 --- /dev/null +++ b/res/common.css.old @@ -0,0 +1,171 @@ +body { + display: block; + margin: 0; + font-family: sans-serif; +} + +nav { + font-weight: 400; + font-size: 25px; + letter-spacing: 2px; + color: #404040; +} + +#navbrand { + font-weight: bold; + font-size: 50px; + color: black; + font-style: italic; +} + +nav ul { + list-style: none; +} + +article { + margin: auto; + line-height: 1.5em; + letter-spacing: .05em; + font-size: 18px; + color: #303030; +} + +p { +/* text-align: justify; + text-justify: distribute;*/ + text-indent: 4em; +} + +article h1 { + font-size: 30px; +} + +article h2 { + font-size: 25px; +} + +article h3 { + font-size: 20px; +} + +li { + text-indent: 1em; +} + +a { + text-decoration: none; + color: #5050B0; +} + +a:hover { + color: #8080A0; +} + +nav a { + color: inherit; +} + +.quote-content::before { + content: url("/res/icon/double-quote-serif-left.svg"); +} + +.quote-content { + font-style: italic; +} + +.quote-content::after { + content: url("/res/icon/double-quote-serif-right.svg"); +} + +.metadata { + font-size: 15px; +} + +.metadata img { + width: 15px; +} + +footer { + padding: 10px; + font-size: 10px; + position: relative; + bottom: 0; + text-align: center; +} + +.license img { + display: inline-block; + width: initial; + vertical-align: bottom; +} + +@media screen and (max-width: 600px) { + article { + padding: 5px; + margin: 0; + } +} + +@media screen and (max-width: 1200px) { + nav { + margin: auto; + padding: 0; + text-align: center; + } + + nav ul { + padding: 0; + } + + nav li { + margin: 0; + display: inline-block; + } +} + +@media screen and (min-width: 700px) { + article { + padding: 30px 80px; + min-width: 25em; + max-width: 30em; + } + + article h1 { + margin-left: -20px; + } +} + +@media screen and (min-width: 1200px) { + nav { + max-width: 15%; + float: left; + padding: 20px 45px 40px 40px; + margin-top: 10px; + border-right: 3px solid; + } + + nav span { + padding-left: 20px; + } + + nav ul { + margin-left: 20px; + } + + nav li { + border-bottom: 1px solid #ccc; + padding: 3px; + } + + nav ul li:last-child { + border-bottom: none; + } + + .aside { + position: relative; + left: 60%; + float: right; + margin-left: -50%; + max-width: 50%; + } +} diff --git a/resume.docx b/resume.docx new file mode 100644 index 0000000000000000000000000000000000000000..6645f691313427bdb5798ec6ab85d6487be74a03 GIT binary patch literal 10663 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 T;y}>zBE+ZHbC|KHp1=JMU}8sf literal 0 HcmV?d00001 diff --git a/resume.odt b/resume.odt new file mode 100644 index 0000000000000000000000000000000000000000..2b17ab30ef902c7b6617025fa516e8f33bdf4986 GIT binary patch literal 17872 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 n%Jk5 + + + + + + + + + + Lijero - Projects + + + + + + + + + +
+
+

Projects

+
+

Current Projects

+

The Switte Programming Language

+

A programming language based on context-sensitive grammar production rules, derived from ordered linear dependent type theory.

+

Switte Rules

+

A rule processing engine + transactional database.

+

Planned projects

+

SwitteOS

+

An operating system based on the Switte programming language.

+

SwitteNet

+

A distributed overlay network.

+
+
+ +
+ + diff --git a/resume2.txt b/resume2.txt new file mode 100644 index 0000000..36db93b --- /dev/null +++ b/resume2.txt @@ -0,0 +1,148 @@ +Fluent with essential programming tools: +* I use Git or another version control system for all of my projects, and can effectively use its features, including branching and merging (https://github.com/lijerom/), also an understanding of semantic versioning +* I have used IDEs including Visual Studio and Eclipse, and configurable editors such as Emacs +* I know how to use command-line toolchains and manually configure project builds (GNU, Stack) +* I can efficiently and effectively use documentation to fill holes in my knowledge when necessary +* Familiar with continuous integration services such as Jenkins (https://ci.lijero.co) +* Efficient reporting and management using bugtrackers such as Mantis and Github Issues +* Microsoft Office, Word, and Excel of course! (in addition to LibreOffice) + +Essential systems administration knowledge: +* Windows, Linux (esp. the Debian family) on the desktop and server, FreeBSD (basic familiarity w/ use and its model) +* Nginx (HTTP server & proxy, serves lijero.co), Bind9 (DNS, I run my own authoritative server for lijero.co), Charybdis (IRCd, formerly ran one for my friends), OpenSSHd (for myself, and formerly another two administrators), MySQL/MariaDB (basic familiarity), Murmur (mumble, formerly, for friends), FTP over SSH (I used to use it for file transfers) with my servers and VPSes +* Use an EDCHE-384 manually generated and signed via Let's Encrypt (https://lijero.co), w/ DNS CAA, HSTS (preloaded), OCSP must staple as a certificate extension -- an A+ rating on SSLLabs -- https://www.ssllabs.com/ssltest/analyze.html?d=lijero.co&latest +* Can configure iptables or other firewalls +* Understand how kernels (microkernels and monolithic kernels, exokernels), filesystems, network stacks, memory managers, schedulers, thread priorities, signals, interrupts, system services, kernel modules, program loaders, swap, paging, and other such features work from my own toy operating systems! (though I've only implemented a few of these things-- a basic kernel, file system, and memory manager) +* Basic load balancing techniques, content delivery network use, caches, semantic URLs +* Fundamental knowledge regarding databases: basic SQL, relational algebra, ACID, transactions, CAP theorem, PACELC theorem, CRUD + +Familiarity with essential internet protocols: +* A basic understanding of IP and UDP, and a stronger understanding of TCP +* I understand background behind TLS(/SSL) but not the actual protocol details (I wanted to implement TLS and TCP, but never did) +* I have written HTTP 1.0 client libraries and servers for fun (and I understand how HTTP/2 works, though not enough to implement it) +* HTTP interface design techniques like REST w/ JSON and XML, HTTP functions +* Though it's not a protocol, remote procedure calls as a concept +* An IRC client+bot from scratch capable of all basic functions +* FTP and how it functions, as little as it's used nowadays +and the less essential ones... +* I wrote portions of a Minecraft server a couple years back using reverse-engineered protocol documentation, but not enough to be useful for gameplay (http://wiki.vg/Protocol) +* I wrote internal networking functions for my own Minecraft clone using both TCP and UDP (and that's when I discovered just how unreliable UDP was!) +* Various toy protocols I wrote, eg. a chat protocol + +Strong theoretical background: +* Programming language development is my main hobby +* Firm grasp of type theory (polymorphic, dependent, linear, and non-commutative varieties-- homotopy, not so much), sequent calculus, lambek calculus +* Firm grasp of formal logic via type theory thanks to computational trinitarianism +* Basic background with category theory, albeit mainly through Haskell, and again, computational trinitarianism +* Competent with functional and object-oriented abstractions and design patterns +* In case you're running a keyword filter: YES I know recursion, loops, iteration, collections, maps (dictionaries), filtering, objects, classes, subtyping polymorphism, inheritance, interfaces, abstract classes, generics, lists, arrays, pointers, sets, multisets, stacks, trees, graphs, optionals, options, tuples, eithers, zippers, continuations (somewhat), strings, characters, integers (byte, ubyte, short, ushort, int, uint, long, ulong, bignum), decimals (float, double, bigdecimal), fixed-points, inductive types, coinductive types, lazy/eager evaluation, booleans, boolean algebra, records, unions, catamorphisms, isomorphisms, functors, monads, monoids, traversables, applicatives, foldables, semigroups, arrows, lenses, continuation-passing style, exceptions, coroutines, green threads, normal threads, mutexes, cooperative multitasking, messages, locks, atomic references, thread pools, reentrancy, thread-local storage, immutability, reference counting, garbage collection, pattern matching, category, vertical types, fixpoints, LUBs, promises, etc +* Understand how CPUs are designed and implemented (I built a 16-bit von-neumann stack-based CPU in Minecraft, and proceeded to design a real-life one on paper, though it has never been implemented) +* Linguistics (including artificial language construction) is another hobby of mine, and you wouldn't believe how often it comes up! +* Formal languages and grammar in terms of production rules +* Object-oriented, (purely) functional, imperative/procedural, reactive + +Programming languages: +* Java (I write most of my projects in this, Robotics club), C# (an XNA platformer a couple years back, a Minecraft clone using the Unity game engine-- most of my Java knowledge is transferrable too) +* Haskell (used to write programming languages, parsers, and projects that don't require a lot of state or IO) +* Racket & Chicken Scheme, dialects of Lisp, Untyped Lambda Calculus (I used it often earlier on, including a web server, XHTML/XML/SVG generation DSL, and it sat right in the core of my operating system-- lambda calculus isn't a programming language obviously but it's related-- and I still use Racket Scribble for documentation) +* x86 assembly (used in a couple of essential components of my operating system, and used to make a Forth implementation) +* Forth (used in conjunction with x86 assembly to bootstrap itself, as is Forth tradition, but no real programs once I had it) +* Rust (used to write an HTML/XML parser and my Minecraft server implementation, and will likely be used again in the future) +* (X)HTML(5), CSS, SQL, PHP (used to build a webcomic site for a friend in middle school before the project was cancelled, a basic hierarchical board called "thread", and my own (incomplete) site, though it's not very technologically impressive thanks to its deliberately minimalist design (https://lijero.co)) +* Prolog (I wrote a good chunk of an implementation of one, though I never finished, and have not used it for any real projects) +* C (portions of the operating system, the VM for that CPU I designed but never built) +* The yet-unnamed programming language I am building right now! (derived from non-commutative linear logic, w/ influences from Haskell, Rust, Lisp, and Forth) + +Former projects +=============== + +Languages +* HTML, XML, SVG parsers and generators, DSLs +* A dozen lisp and lambda calculus implementations (at least one in every language I've ever used) +* An indirect-threaded Forth implementation in x86 assembly +* Reflection-based implementation of the reactive programming paradigm for Java +* The beginnings of a prolog implementation, never finished + +Web +* IRC and HTTP, clients and daemons +* A webcomic site for a friend, until the project was cancelled +* A heirarchical board called "thread" +* My own minimalist website + +Low-level +* An operating system based on a programming language interpreter in the kernel (actually partially implemented, including the kernel, filesystem, memory manager, terminal, and the language itself), and tons of other plans for other designs that never were built +* A 16-bit von-neumann stack-based CPU in Minecraft using pure redstone, before the age of comparators, hoppers, and command blocks +* A CPU design for real life on paper, never implemented, and a basic virtual marchine for that CPU + +Games +* Tons of games in Scratch from when I was younger, too many to list +* I owned a Minecraft server with 60+ concurrent connections at peak hours for a couple years + - most of the content was based on custom scripts, most of which I wrote-- most vanilla content was replaced somehow, including map generation, monster spawns, the actual monsters themselves, radiation and thirst mechanics, and the beginnings of a technology mod + - I learned through trial-and-error (mostly error) how to manage a large community of people effectively + - this was how I really got into programming + - used a custom modpack, distributed via a self-hosted technic solder instance + - this is how I learnt about VPSes, and was my first introduction to Linux + - included a network of sub-servers (the desert world, the ice world, the normal world, the vanilla desert world, a games server, a sandbox server + quest build server, and a hub) via Bungee-- though this was overkill for the server population so I went back to one server with multiple worlds +* A Minecraft server implementation written in Rust + - built from reverse-engineered protocol docs (http://wiki.vg/Protocol) + - never got enough done to be useable for gameplay, but it was a cool project +* A Minecraft clone written in C# with unity. I wrote the + - infinite map generation with simplex noise that, if I recall correctly, I implemented myself + - mesh generation and optimization + - map editing capabilities + - most of the way to networked multiplayer (partially TCP, partially UDP) +* I've used and written various event systems and can relate them to reactive programming +* Generic simple games like pongs, breakouts, snakes, etc +* I have a pretty solid knowledge of OpenGL, but haven't written anything complex using it directly + +Robotics +* A bunch of internal abstractions for our robotics club involving basic functionality like motor controls, input mapping and configuration, and operation modes +* A dataflow abstraction that got sidetracked into a reflection-based implementation of reactive programming for Java and then evolved into another project +* Started work on cube recognition software, but we had a really bad season and dropped out long before it was completed + +Current Projects +================ + +Active +* A programming language derived from dependent ordered linear type theory (and hopefully homotopy theory influences if I ever learn it) based on the construction of valid terms using context-sensitive grammar production rules, with an emphasis on practicality (hey, don't laugh!) +* A rule processing engine + transactional database focused on generating, processing, and querying business data, using modern structure and a powerful rule description language + +Planned, eventually +* An operating system based on my programming language and category-theoretic abstractions, rather than the traditional model (I believe this will make things simpler while still being useable, hopefully) +* A distributed overlay network for a secure, autonomous internet, and powerful abstractions for writing internet-based applications and datastores, and decentralized networks + - the two above concepts are extremely closely intertwined with eachother and the language + + +Real-life stuff +=============== + +Clubs: +* Robotics (school club) +* Dungeons & dragons (school club) +* Dungeons & dragons (group of friends) +* Speech & debate (dropped out this year, definitely will do next year) +* Marching band (class, during football season) +* Concert band (class, the rest of the year) +* Jazz band (0-period class before school) + +Things I like to do: +* Hiking & backpacking +* Cycling (to a lesser degree) +* Dungeons & dragons +* Perform music +* Listen to all sorts of music +* Play board games or poker (for chips) & chat with friends +* Occasional video games like Dwarf Fortress, Factorio, or Terraria with friends, formerly a LOT LOT of Minecraft + +Hobbies: +* Programming language theory +* Type theory & other mathematical stuff +* Linguistics & artificial language construction (conlanging) +* Worldbuilding (formerly, and hopefully again someday) +* Music theory (this one is more far off, in that I don't work with it a lot yet) + +In summary... +* I am fascinated by conceptual structure & expression (programming languages, human languages, mathematics, music theory, speech & debate) +* I love creativity in structured contexts (worldbuilding, conlanging, dungeons & dragons, music theory) +* I love music (concert band, marching band, jazz band, music theory) +* I love nature diff --git a/resume3.docx b/resume3.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a27858103f99324eecbb4f6fa319dbd999c8a61 GIT binary patch literal 13041 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 Swstring crawl-delay)) - (field-when-present "Sitemap" sitemap) - (field-when-present "Host" host))) - \ No newline at end of file diff --git a/rkt/site.rkt b/rkt/site.rkt deleted file mode 100644 index 82acf87..0000000 --- a/rkt/site.rkt +++ /dev/null @@ -1,15 +0,0 @@ -#lang racket -(require "sitemap.rkt") -(require "robots.rkt") - -(define base-url "https://lijero.co") - -(define (site-page url body #:priority priority #:lastmod lastmod #:changefreq changefreq) - (cons (sitemap-url (string-append base-url url) #:priority priority #:lastmod lastmod #:changefreq changefreq) - (cons url (xexprs body)))) - -(define (gen-site pages) - (define sitemap-urls (append* (map (match-lambda ([cons sitemap _] sitemap)) pages))) - (define page-bodies (append* (map (match-lambda ([cons _ page] page)) pages))) - (cons (sitemap sitemap-urls) - (page-bodies) diff --git a/rkt/sitemap.rkt b/rkt/sitemap.rkt deleted file mode 100644 index 5dbdf4c..0000000 --- a/rkt/sitemap.rkt +++ /dev/null @@ -1,26 +0,0 @@ -#lang racket -(require "xexprs/xexprs.rkt") -; A quick sitemap-xml generator (https://www.sitemaps.org/) -; Sitemaps help web crawlers index your website - -; Ugly hack because I'm bad at Racket -(define (when-present name value rest) - (if (null? value) - rest - (cons (cons name value) rest))) - -; A sitemap URL entry -; https://www.sitemaps.org/protocol.html -(define (sitemap-url loc #:lastmod (lastmod '()) #:changefreq (changefreq '()) #:priority (priority 0.5)) - `(url (priority ,priority) - ,@(when-present "lastmod" lastmod - (when-present "changefreq" changefreq - '())))) - -; Generates a sitemap xml -(define (sitemap urls) - (string-append - "" - (xexprs - `(urlset #:xmlns "http://www.sitemaps.org/schemas/sitemap/0.9" - ,@urls)))) \ No newline at end of file diff --git a/rkt/web.rkt b/rkt/web.rkt deleted file mode 100644 index f443dc5..0000000 --- a/rkt/web.rkt +++ /dev/null @@ -1,73 +0,0 @@ -#lang racket/base -(require racket/tcp) -(require racket/string) - -; I don't know what the hell is going on but I can't find any useful docs on anything, so... fuck it! -(define (string-empty? str) - (eq? (string-length str) 0)) - -(define (string-index str c) - (define (string-index-p i) - (if (or (eq? (string-length str) i) (eq? (string-ref str i) c)) i - (string-index-p (+ i 1)))) - (string-index-p 0)) - -(define (string-cut str c) - (define index (string-index str c)) - (values (substring str 0 index) (substring str (+ index 1)))) - -; Fucking hell -(define (string-split str c) - (define-values (head tail) (string-cut str c)) - (if (string-empty? tail) - (list head) - (cons (head (string-split tail c))))) - -(define (parse-request line) - (string-split line #\ )) - -(define (parse-header line) - (define-values (head tail) (string-cut line #\:)) - (cons (string->symbol head) tail)) - -(define (read-headers in) - (define (read-header) - (define line (read-line in)) - (if (or (eof-object? line) (string-empty? line)) (list) - (cons (parse-header line) (read-header in)))) - (make-immutable-hash (read-header))) - -(define (serve handler #:port (port 8080)) - (define listener (tcp-listen port 4 #t)) - (define (handle in out) - (define request-line (parse-request (read-line in))) - (define request-headers (read-headers in)) - (define message-body "") ; Temporary - - (display (handler request-line request-headers message-body) out) - - (close-input-port in) - (close-output-port out)) - (define (loop) - (define-values (in out) (tcp-accept listener)) - (thread (λ () (handle in out))) - (loop)) - (loop)) - -(define status/ok '(200 "OK")) - -(define (headers->string headers) - (define (header->string header) - (string-append (symbol->string (car header)) ": " (cdr header))) - (string-join (map header->string (hash->list headers)) "\r\n")) - -(define (response (body "") #:status (status status/ok) #:headers (headers '())) - (string-append - "HTTP/1.0 " (number->string (car status)) (cadr status) "\r\n" - (headers->string headers) "\r\n\r\n" - body)) - -(define (my-handler req headers body) - (response "test" #:headers (make-immutable-hash '(Content-Type "text/html; charset=UTF-8")))) - -(serve my-handler) \ No newline at end of file diff --git a/scr/leksah0.png b/scr/leksah0.png new file mode 100644 index 0000000000000000000000000000000000000000..4507edd6fcc8f36cb2a3694e6fbb8ce4d389d5a5 GIT binary patch literal 28178 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

(HfeiJwvhVmr=2<;1F~ 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 z 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 >= max min Show showsPrec ShowS show String showList CInt CULong Storable sizeOf alignment peekElemOff IO pokeElemOff peekByteOff pokeByteOff peek poke Default def Read readsPrec ReadS readList readPrec ReadPrec readListPrec Word16 Word8 Word64 Int32 Word32 +Warning: Graphics.X11.Xlib.Atom: could not find link destinations for: + String Bool IO Maybe +Warning: Graphics.X11.Xlib.Color: could not find link destinations for: + String IO +Warning: Graphics.X11.Xlib.Context: could not find link destinations for: + IO Bool CInt String +Warning: Graphics.X11.Xlib.Display: could not find link destinations for: + CInt String IO +Warning: Graphics.X11.Xlib.Event: could not find link destinations for: + CInt Eq == Bool /= Data gfoldl gunfold Constr toConstr dataTypeOf DataType dataCast1 Typeable * Maybe dataCast2 gmapT gmapQl gmapQr gmapQ gmapQi Int gmapM Monad gmapMp MonadPlus gmapMo Ord compare Ordering < <= > >= max min Show showsPrec ShowS show String showList Ptr IO Word32 Integer +Warning: Graphics.X11.Xlib.Font: could not find link destinations for: + Word16 IO String Eq == Bool /= Data gfoldl gunfold Constr toConstr dataTypeOf DataType dataCast1 Typeable * Maybe dataCast2 gmapT gmapQl gmapQr gmapQ gmapQi Int gmapM Monad gmapMp MonadPlus gmapMo Ord compare Ordering < <= > >= max min Show showsPrec ShowS show showList Int32 CInt +Warning: Graphics.X11.Xlib.Image: could not find link destinations for: + Eq == Bool /= Data gfoldl gunfold Constr toConstr dataTypeOf DataType dataCast1 Typeable * Maybe dataCast2 gmapT gmapQl gmapQr gmapQ gmapQi Int gmapM Monad gmapMp MonadPlus gmapMo Ord compare Ordering < <= > >= max min Show showsPrec ShowS show String showList CInt Ptr CChar IO CUInt CULong +Warning: Graphics.X11.Xlib.Misc: could not find link destinations for: + IO CInt Bool String CLong Maybe Either Ptr +Warning: Graphics.X11.Xlib.Region: could not find link destinations for: + Eq == Bool /= Data gfoldl gunfold Constr toConstr dataTypeOf DataType dataCast1 Typeable * Maybe dataCast2 gmapT gmapQl gmapQr gmapQ gmapQi Int gmapM Monad gmapMp MonadPlus gmapMo Ord compare Ordering < <= > >= max min Show showsPrec ShowS show String showList CInt IO +Warning: Graphics.X11.Xlib.Screen: could not find link destinations for: + CInt Bool +Warning: Graphics.X11.Xlib.Window: could not find link destinations for: + String IO CInt Ptr Bool +Warning: Graphics.X11.Xlib: could not find link destinations for: + Int Ptr Eq == Bool /= Data gfoldl gunfold Constr toConstr dataTypeOf DataType dataCast1 Typeable * Maybe dataCast2 gmapT gmapQl gmapQr gmapQ gmapQi gmapM Monad gmapMp MonadPlus gmapMo Ord compare Ordering < <= > >= max min Show showsPrec ShowS show String showList CInt CULong Storable sizeOf alignment peekElemOff IO pokeElemOff peekByteOff pokeByteOff peek poke Default def Read readsPrec ReadS readList readPrec ReadPrec readListPrec Word16 Word8 Word64 Int32 Word32 +Warning: Graphics.X11.Xrandr: could not find link destinations for: + CInt Show showsPrec Int ShowS show String showList Storable sizeOf alignment peekElemOff Ptr IO pokeElemOff peekByteOff pokeByteOff peek poke CUInt Eq == Bool /= CULong CLong Word16 Data gfoldl gunfold Constr toConstr dataTypeOf DataType dataCast1 Typeable * Maybe dataCast2 gmapT gmapQl gmapQr gmapQ gmapQi gmapM Monad gmapMp MonadPlus gmapMo Ord compare Ordering < <= > >= max min CShort Word32 +Warning: Graphics.X11.Xlib.Extras: could not find link destinations for: + CULong Bool CInt CUInt Show showsPrec Int ShowS show String showList IO Storable sizeOf alignment peekElemOff Ptr pokeElemOff peekByteOff pokeByteOff peek poke CString Word64 CWString Eq == /= Ord compare Ordering < <= > >= max min Int32 Maybe CUChar CLong CChar CShort FunPtr +Warning: Graphics.X11.Xinerama: could not find link destinations for: + CInt CShort Show showsPrec Int ShowS show String showList Storable sizeOf alignment peekElemOff Ptr IO pokeElemOff peekByteOff pokeByteOff peek poke Bool Maybe +28 +Creating interfaces... +Haddock coverage: +Checking module Graphics.X11.Xrender... +Creating interface... + 0% ( 0 / 11) in 'Graphics.X11.Xrender' + Missing documentation for: + Module header + peekCUShort (Graphics/X11/Xrender.hsc:21) + pokeCUShort (Graphics/X11/Xrender.hsc:26) + peekCShort (Graphics/X11/Xrender.hsc:31) + pokeCShort (Graphics/X11/Xrender.hsc:36) + XRenderColor (Graphics/X11/Xrender.hsc:40) + (Graphics/X11/Xrender.hsc:47) + XGlyphInfo (Graphics/X11/Xrender.hsc:62) + (Graphics/X11/Xrender.hsc:71) + XRenderDirectFormat (Graphics/X11/Xrender.hsc:91) + (Graphics/X11/Xrender.hsc:102) +Checking module Graphics.X11.Xft... +Creating interface... + 0% ( 0 / 35) in 'Graphics.X11.Xft' + Missing documentation for: + Module header + XftColor (Graphics/X11/Xft.hsc:68) + xftcolor_pixel (Graphics/X11/Xft.hsc:70) + allocaXftColor (Graphics/X11/Xft.hsc:76) + withXftColorName (Graphics/X11/Xft.hsc:79) + withXftColorValue (Graphics/X11/Xft.hsc:91) + XftDraw (Graphics/X11/Xft.hsc:107) + withXftDraw (Graphics/X11/Xft.hsc:109) + xftDrawCreate (Graphics/X11/Xft.hsc:117) + xftDrawCreateBitmap (Graphics/X11/Xft.hsc:120) + xftDrawCreateAlpha (Graphics/X11/Xft.hsc:126) + xftDrawChange (Graphics/X11/Xft.hsc:128) + xftDrawDisplay (Graphics/update_toolbar 0.17647058823529413 +update_toolbar 0.23529411764705882 +update_toolbar 0.29411764705882354 +update_toolbar 0.35294117647058826 +update_toolbar 0.4117647058823529 +update_toolbar 0.47058823529411764 +update_toolbar 0.5294117647058824 +update_toolbar 0.5882352941176471 +update_toolbar 0.6470588235294118 +update_toolbar 0.7058823529411765 +update_toolbar 0.7647058823529411 +update_toolbar 0.8235294117647058 +update_toolbar 0.8823529411764706 +update_toolbar 0.9411764705882353 + +src/XMonad/Core.hs:39:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +src/XMonad/Operations.hs:31:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +src/XMonad/Operations.hs:38:1: warning: [-Wunused-imports] + The import of ‘System.Directory’ is redundant + except perhaps to import instances from ‘System.Directory’ + To import instances alone, use: import System.Directory() + +src/XMonad/Main.hs:70:42: warning: [-Wdeprecations] + In the use of ‘migrateState’ (imported from XMonad.Operations): + Deprecated: "will be removed some point in the future." + +src/XMonad/Main.hs:200:9: warning: [-Wunused-local-binds] + Defined but not used: ‘lreads’ +X11/Xft.hsc:131) + xftDrawDrawable (Graphics/X11/Xft.hsc:134) + xftDrawColormap (Graphics/X11/Xft.hsc:137) + xftDrawVisual (Graphics/X11/Xft.hsc:140) + xftDrawDestroy (Graphics/X11/Xft.hsc:143) + XftFont (Graphics/X11/Xft.hsc:150) + xftfont_ascent (Graphics/X11/Xft.hsc:152) + xftfont_descent (Graphics/X11/Xft.hsc:153) + xftfont_height (Graphics/X11/Xft.hsc:154) + xftfont_max_advance_width (Graphics/X11/Xft.hsc:155) + xftFontOpen (Graphics/X11/Xft.hsc:162) + xftFontOpenXlfd (Graphics/X11/Xft.hsc:169) + xftLockFace (Graphics/X11/Xft.hsc:172) + xftUnlockFace (Graphics/X11/Xft.hsc:175) + xftFontCopy (Graphics/X11/Xft.hsc:178) + xftFontClose (Graphics/X11/Xft.hsc:181) + xftDrawGlyphs (Graphics/X11/Xft.hsc:193) + xftDrawString (Graphics/X11/Xft.hsc:200) + xftTextExtents (Graphics/X11/Xft.hsc:209) + xftDrawRect (Graphics/X11/Xft.hsc:222) + xftDrawSetClipRectangles (Graphics/X11/Xft.hsc:236) + xftDrawSetSubwindowMode (Graphics/X11/Xft.hsc:246) + xftInitFtLibrary (Graphics/X11/Xft.hsc:252) +Attaching instances... +Building cross-linking environment... +Renaming interfaces... +Warning: Graphics.X11.Xrender: could not find link destinations for: + Ptr CInt IO Int Storable sizeOf alignment peekElemOff pokeElemOff peekByteOff pokeByteOff peek poke +Warning: Graphics.X11.Xft: could not find link destinations for: + IO Int Ptr Display Visual Colormap String Drawable Pixmap Integral Screen Rectangle Bool fromIntegral +2 +Creating interfaces... +Haddock coverage: +Checking module Data.DList... +Creating interface... + 100% ( 20 / 20) in 'Data.DList' +Attaching instances... +Building cross-linking environment... +Renaming interfaces... +Warning: Data.DList: could not find link destinations for: + ++ Monad * >>= >> return fail String Functor fmap <$ Applicative pure <*> *> <* Foldable fold Monoid foldMap foldr foldr' foldl foldl' foldr1 foldl1 toList null Bool length Int elem Eq maximum Ord minimum sum Num product Alternative empty <|> some many MonadPlus mzero mplus IsList fromList Item fromListN toList == /= compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList IsString ~ Char fromString Semigroup <> sconcat NonEmpty stimes Integral mempty mappend mconcat NFData rnf Maybe +1 +Creating interfaces... +Haddock coverage: +Checking module System.Locale.SetLocale... +Creating interface... + 0% ( 0 / 4) in 'System.Locale.SetLocale' + Missing documentation for: + Module header + Category (System/Locale/SetLocale.hsc:25) + categoryToCInt (System/Locale/SetLocale.hsc:34) + setLocale (System/Locale/SetLocale.hsc:49) +Attaching instances... +Building cross-linking environment... +Renaming interfaces... +Warning: System.Locale.SetLocale: could not find link destinations for: + Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList CInt Maybe IO +1 +Creating interfaces... +Haddock coverage: +Checking module XMonad.StackSet... +Creating interface... + 100% ( 67 / 67) in 'XMonad.StackSet' +Checking module XMonad.Core... +Creating interface... +Warning: Couldn't find .haddock for export Typeable + 85% ( 44 / 52) in 'XMonad.Core' + Missing documentation for: + WindowSet (src/XMonad/Core.hs:125) + WindowSpace (src/XMonad/Core.hs:126) + XConfig (src/XMonad/Core.hs:98) + Typeable + uninstallSignalHandlers (src/XMonad/Core.hs:660) + ManageHook (src/XMonad/Core.hs:161) + Query (src/XMonad/Core.hs:162) + runQuery (src/XMonad/Core.hs:165) +Checking module XMonad.Layout... +Creating interface... + 73% ( 11 / 15) in 'XMonad.Layout' + Missing documentation for: + splitVertically (src/XMonad/Layout.hs:96) + splitHorizontally (src/XMonad/Layout.hs:96) + splitHorizontallyBy (src/XMonad/Layout.hs:106) + splitVerticallyBy (src/XMonad/Layout.hs:106) +Checking module XMonad.Operations... +Creating interface... + 100% ( 54 / 54) in 'XMonad.Operations' +Checking module XMonad.ManageHook... +Creating interface... + 95% ( 18 / 19) in 'XMonad.ManageHook' + Missing documentation for: + getStringProperty (src/XMonad/ManageHook.hs:99) +Checking module XMonad.Config... +Creating interface... +Warning: Couldn't find .haddock for export Default + 67% ( 2 / 3) in 'XMonad.Config' + Missing documentation for: + Default +Checking module Paths_xmonad... +Creating interface... + 0% ( 0 / 9) in 'Paths_xmonad' + Missing documentation for: + Module header + version (dist/build/autogen/Paths_xmonad.hs:28) + getBinDir (dist/build/autogen/Paths_xmonad.hs:39) + getLibDir (dist/build/autogen/Paths_xmonad.hs:39) + getDynLibDir (dist/build/autogen/Paths_xmonad.hs:39) + getDataDir (dist/build/autogen/Paths_xmonad.hs:39) + getLibexecDir (dist/build/autogen/Paths_xmonad.hs:39) + getDataFileName (dist/build/autogen/Paths_xmonad.hs:47) + getSysconfDir (dist/build/autogen/Paths_xmonad.hs:39) +Checking module XMonad.Main... +Creating interface... + 100% ( 3 / 3) in 'XMonad.Main' +Checking module XMonad... +Creating interface... +Warning: XMonad: Could not find documentation for exported module: Graphics.X11 +Warning: XMonad: Could not find documentation for exported module: Graphics.X11.Xlib.Extras +Warning: Couldn't find .haddock for export .|. +Warning: Couldn't find .haddock for export MonadState +Warning: Couldn't find .haddock for export gets +Warning: Couldn't find .haddock for export modify +Warning: Couldn't find .haddock for export MonadReader +Warning: Couldn't find .haddock for export asks +Warning: Couldn't find .haddock for export MonadIO + 50% ( 7 / 14) in 'XMonad' + Missing documentation for: + .|. + MonadState + gets + modify + MonadReader + asks + MonadIO +Attaching instances... +Building cross-linking environment... +Renaming interfaces... +Warning: XMonad.StackSet: could not find link destinations for: + * Map Eq == Bool /= Read Ord readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Maybe Rational Integral Nothing Just cycle True with maybe +Warning: XMonad.Core: could not find link destinations for: + ReaderT StateT IO Monad * >>= >> return fail String Functor fmap <$ Applicative pure <*> *> <* Monoid mempty mappend mconcat Window Int Enum succ pred toEnum fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Integral quot rem div mod quotRem divMod toInteger Integer Num + - * negate abs signum fromInteger Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Real toRational Rational Show showsPrec ShowS show showList Rectangle Set Map Maybe Position KeyMask Either Display Pixel KeySym Button Event All ButtonMask Dimension EventMask typeRep# Atom ProcessID forkProcess True False FilePath WindowAttributes Endo +Warning: XMonad.Layout: could not find link destinations for: + * Rectangle Maybe String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Rational Eq == Bool /= RealFrac +Warning: XMonad.Operations: could not find link destinations for: + Window Rectangle Int Display String Pixel EventMask Bool True Maybe Nothing KeyMask IO Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Functor False Position Dimension Integral SizeHints +Warning: XMonad.ManageHook: could not find link destinations for: + Monoid mappend Monad Bool True Eq && || String Display Window Maybe Endo +Warning: XMonad.Config: could not find link destinations for: + Double Float Int Int8 Int16 Int32 Int64 Integer Ordering Word Word8 Word16 Word32 Word64 All Any CInt CLong CTime CClock CSize VisualInfo CShort CULong CUInt CUShort CUSeconds CULLong CUIntPtr CUIntMax CSigAtomic CSUSeconds CPtrdiff CLLong CIntPtr CIntMax CFloat CDouble Maybe Ratio Integral IO Last First Sum Num Product Endo Dual Complex RealFloat ~ * +Warning: Paths_xmonad: could not find link destinations for: + Vupdate_toolbar 1.0 + +XMonad/Actions/GridSelect.hs:1:104: warning: + -XOverlappingInstances is deprecated: instead use per-instance pragmas OVERLAPPING/OVERLAPPABLE/OVERLAPS + +XMonad/Util/WorkspaceCompare.hs:28:1: warning: [-Wunused-imports] + The import of ‘Data.Monoid’ is redundant + except perhaps to import instances from ‘Data.Monoid’ + To import instances alone, use: import Data.Monoid() + +XMonad/Util/Timer.hs:23:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +XMonad/Util/RemoteWindows.hs:41:1: warning: [-Wunused-imports] + The import of ‘Data.Monoid’ is redundant + except perhaps to import instances from ‘Data.Monoid’ + To import instances alone, use: import Data.Monoid() + +XMonad/Util/Invisible.hs:25:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() +update workspace info called + +XMonad/Util/Font.hs:38:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() +ersion IO FilePath +Warning: XMonad.Main: could not find link destinations for: + Window Read IO replace +Warning: XMonad: could not find link destinations for: + Bits Monad * MaybeT ListT StateT WriterT Monoid WriterT StateT IdentityT ExceptT ErrorT Error ReaderT ContT RWST RWST Window IO +9 +Creating interfaces... +Haddock coverage: +Checking module XMonad.Util.WorkspaceCompare... +Creating interface... + 85% ( 11 / 13) in 'XMonad.Util.WorkspaceCompare' + Missing documentation for: + WorkspaceCompare (./XMonad/Util/WorkspaceCompare.hs:33) + WorkspaceSort (./XMonad/Util/WorkspaceCompare.hs:34) +Checking module XMonad.Util.WindowState... +Creating interface... +Warning: Couldn't find .haddock for export get +Warning: Couldn't find .haddock for export put + 75% ( 6 / 8) in 'XMonad.Util.WindowState' + Missing documentation for: + get + put +Checking module XMonad.Util.WindowProperties... +Creating interface... + 100% ( 12 / 12) in 'XMonad.Util.WindowProperties' +Checking module XMonad.Util.Ungrab... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Util.Ungrab' +Checking module XMonad.Util.Types... +Creating interface... + 100% ( 3 / 3) in 'XMonad.Util.Types' +Checking module XMonad.Util.TreeZipper... +Creating interface... + 100% ( 23 / 23) in 'XMonad.Util.TreeZipper' +Checking module XMonad.Util.Timer... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Util.Timer' + Missing documentation for: + TimerId (./XMonad/Util/Timer.hs:31) +Checking module XMonad.Util.StringProp... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Util.StringProp' + Missing documentation for: + StringProp (./XMonad/Util/StringProp.hs:27) +Checking module XMonad.Util.Stack... +Creating interface... + 91% ( 51 / 56) in 'XMonad.Util.Stack' + Missing documentation for: + Zipper (./XMonad/Util/Stack.hs:84) + emptyZ (./XMonad/Util/Stack.hs:86) + singletonZ (./XMonad/Util/Stack.hs:89) + mapE_ (./XMonad/Util/Stack.hs:322) + mapEM_ (./XMonad/Util/Stack.hs:330) +Checking module XMonad.Util.Run... +Creating interface... +Warning: Couldn't find .haddock for export hPutStr +Warning: Couldn't find .haddock for export hPutStrLn + 86% ( 12 / 14) in 'XMonad.Util.Run' + Missing documentation for: + hPutStr + hPutStrLn +Checking module XMonad.Util.XSelection... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Util.XSelection' +Checking module XMonad.Util.Replace... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Util.Replace' +Checking module XMonad.Util.RemoteWindows... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Util.RemoteWindows' +Checking module XMonad.Util.NoTaskbar... +Creating interface... + 80% ( 4 / 5) in 'XMonad.Util.NoTaskbar' + Missing documentation for: + Module header +Checking module XMonad.Util.NamedWindows... +Creating interface... + 43% ( 3 / 7) in 'XMonad.Util.NamedWindows' + Missing documentation for: + NamedWindow (./XMonad/Util/NamedWindows.hs:38) + getName (./XMonad/Util/NamedWindows.hs:46) + withNamedWindow (./XMonad/Util/NamedWindows.hs:61) + unName (./XMonad/Util/NamedWindows.hs:58) +Checking module XMonad.Util.Invisible... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Util.Invisible' + Missing documentation for: + Invisible (./XMonad/Util/Invisible.hs:33) + whenIJust (./XMonad/Util/Invisible.hs:41) + fromIMaybe (./XMonad/Util/Invisible.hs:45) +Checking module XMonad.Util.Font... +Creating interface... + 56% ( 10 / 18) in 'XMonad.Util.Font' + Missing documentation for: + XMonadFont (./XMonad/Util/Font.hs:51) + releaseXMF (./XMonad/Util/Font.hs:126) + releaseCoreFont (./XMonad/Util/Font.hs:92) + initUtf8Font (./XMonad/Util/Font.hs:97) + releaseUtf8Font (./XMonad/Util/Font.hs:105) + textWidthXMF (./XMonad/Util/Font.hs:136) + textExtentsXMF (./XMonad/Util/Font.hs:145) + printStringXMF (./XMonad/Util/Font.hs:179) +Checking module XMonad.Util.Image... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Util.Image' +Checking module XMonad.Util.XUtils... +Creating interface... + 100% ( 17 / 17) in 'XMonad.Util.XUtils' +Checking module XMonad.Util.ExtensibleState... +Creating interface... + 78% ( 7 / 9) in 'XMonad.Util.ExtensibleState' + Missing documentation for: + gets (./XMonad/Util/ExtensibleState.hs:113) + modified (./XMonad/Util/ExtensibleState.hs:120) +Checking module XMonad.Util.PositionStore... +Creating interface... + 12% ( 1 / 8) in 'XMonad.Util.PositionStore' + Missing documentation for: + getPosStore (./XMonad/Util/PositionStore.hs:46) + modifyPosStore (./XMonad/Util/PositionStore.hs:49) + posStoreInsert (./XMonad/Util/PositionStore.hs:52) + posStoreMove (./XMonad/Util/PositionStore.hs:74) + posStoreQuery (./XMonad/Util/PositionStore.hs:64) + posStoreRemove (./XMonad/Util/PositionStore.hs:61) + PositionStore (./XMonad/Util/PositionStore.hs:37) +Checking module XMonad.Util.SpawnNamedPipe... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Util.SpawnNamedPipe' +Checking module XMonad.Util.SpawnOnce... +Creating interface... + 100% ( 2 / 2) in 'XMonad.Util.SpawnOnce' +Checking module XMonad.Util.Dzen... +Creating interface... +Warning: Couldn't find .haddock for export >=> + 91% ( 20 / 22) in 'XMonad.Util.Dzen' + Missing documentation for: + DzenConfig (./XMonad/Util/Dzen.hs:45) + >=> +Checking module XMonad.Util.Dmenu... +Creating interface... + 100% ( 10 / 10) in 'XMonad.Util.Dmenu' +Checking module XMonad.Util.DebugWindow... +Creating interface... + 100% ( 2 / 2) in 'XMonad.Util.DebugWindow' +Checking module XMonad.Util.CustomKeys... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Util.CustomKeys' +Checking module XMonad.Util.Cursor... +Creating interface... +Warning: XMonad.Util.Cursor: Could not find documentation for exported module: Graphics.X11.Xlib.Cursor + 100% ( 4 / 4) in 'XMonad.Util.Cursor' +Checking module XMonad.Prompt... +Creating interface... +Warning: Couldn't find .haddock for export def + 76% ( 51 / 67) in 'XMonad.Prompt' + Missing documentation for: + def + amberXPConfig (./XMonad/Prompt.hs:244) + defaultXPConfig (./XMonad/Prompt.hs:244) + greenXPConfig (./XMonad/Prompt.hs:244) + XPMode (./XMonad/Prompt.hs:160) + XPType (./XMonad/Prompt.hs:158) + XPPosition (./XMonad/Prompt.hs:229) + XPConfig (./XMonad/Prompt.hs:128) + XP (./XMonad/Prompt.hs:105) + moveHistory (./XMonad/Prompt.hs:850) + setSuccess (./XMonad/Prompt.hs:727) + setDone (./XMonad/Prompt.hs:730) + ComplFunction (./XMonad/Prompt.hs:159) + breakAtSpace (./XMonad/Prompt.hs:1198) + HistoryMatches (./XMonad/Prompt.hs:1230) + XPState (./XMonad/Prompt.hs:107) +Checking module XMonad.Prompt.AppendFile... +Creating interface... + 80% ( 4 / 5) in 'XMonad.Prompt.AppendFile' + Missing documentation for: + AppendFile (./XMonad/Prompt/AppendFile.hs:61) +Checking module XMonad.Prompt.ConfirmPrompt... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Prompt.ConfirmPrompt' +Checking module XMonad.Prompt.DirExec... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Prompt.DirExec' + Missing documentation for: + DirExec (./XMonad/Prompt/DirExec.hs:68) +Checking module XMonad.Prompt.Directory... +Creating interface... + 67% ( 4 / 6) in 'XMonad.Prompt.Directory' + Missing documentation for: + directoryPrompt (./XMonad/Prompt/Directory.hs:39) + Dir (./XMonad/Prompt/Directory.hs:30) +Checking module XMonad.Prompt.Input... +Creating interface... + 86% ( 6 / 7) in 'XMonad.Prompt.Input' + Missing documentation for: + InputPrompt (./XMonad/Prompt/Input.hs:80) +Checking module XMonad.Prompt.Email... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Prompt.Email' +Checking module XMonad.Prompt.Pass... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Prompt.Pass' +Checking module XMonad.Prompt.Shell... +Creating interface... + 50% ( 8 / 16) in 'XMonad.Prompt.Shell' + Missing documentation for: + Shell (./XMonad/Prompt/Shell.hs:61) + shellPrompt (./XMonad/Prompt/Shell.hs:68) + prompt (./XMonad/Prompt/Shell.hs:90) + safePrompt (./XMonad/Prompt/Shell.hs:90) + unsafePrompt (./XMonad/Prompt/Shell.hs:90) + getCommands (./XMonad/Prompt/Shell.hs:119) + getShellCompl (./XMonad/Prompt/Shell.hs:97) + split (./XMonad/P +XMonad/Prompt/Unicode.hs:27:1: warning: [-Wunused-imports] + The import of ‘System.Environment’ is redundant + except perhaps to import instances from ‘System.Environment’ + To import instances alone, use: import System.Environment() + +XMonad/Prompt/Unicode.hs:79:13: warning: [-Wunused-matches] + Defined but not used: ‘c’ + +XMonad/Prompt/Unicode.hs:83:15: warning: [-Wname-shadowing] + This binding for ‘config’ shadows the existing binding + imported from ‘XMonad’ at XMonad/Prompt/Unicode.hs:35:1-13 + (and originally defined in ‘XMonad.Core’) +rompt/Shell.hs:126) +Checking module XMonad.Prompt.AppLauncher... +Creating interface... + 80% ( 8 / 10) in 'XMonad.Prompt.AppLauncher' + Missing documentation for: + Application (./XMonad/Prompt/AppLauncher.hs:64) + AppPrompt (./XMonad/Prompt/AppLauncher.hs:60) +Checking module XMonad.Prompt.Man... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Prompt.Man' + Missing documentation for: + Man (./XMonad/Prompt/Man.hs:54) +Checking module XMonad.Prompt.Ssh... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Prompt.Ssh' + Missing documentation for: + sshPrompt (./XMonad/Prompt/Ssh.hs:63) + Ssh (./XMonad/Prompt/Ssh.hs:53) +Checking module XMonad.Prompt.Unicode... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Prompt.Unicode' +Checking module XMonad.Prompt.Workspace... +Creating interface... + 67% ( 4 / 6) in 'XMonad.Prompt.Workspace' + Missing documentation for: + workspacePrompt (./XMonad/Prompt/Workspace.hs:45) + Wor (./XMonad/Prompt/Workspace.hs:40) +Checking module XMonad.Layout.TwoPane... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.TwoPane' + Missing documentation for: + TwoPane (./XMonad/Layout/TwoPane.hs:42) +Checking module XMonad.Layout.ToggleLayouts... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Layout.ToggleLayouts' + Missing documentation for: + toggleLayouts (./XMonad/Layout/ToggleLayouts.hs:55) + ToggleLayout (./XMonad/Layout/ToggleLayouts.hs:52) + ToggleLayouts (./XMonad/Layout/ToggleLayouts.hs:51) +Checking module XMonad.Layout.ThreeColumns... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Layout.ThreeColumns' +Checking module XMonad.Layout.StackTile... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.StackTile' + Missing documentation for: + StackTile (./XMonad/Layout/StackTile.hs:42) +Checking module XMonad.Layout.Square... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.Square' + Missing documentation for: + Square (./XMonad/Layout/Square.hs:45) +Checking module XMonad.Layout.Spiral... +Creating interface... + 62% ( 5 / 8) in 'XMonad.Layout.Spiral' + Missing documentation for: + Rotation (./XMonad/Layout/Spiral.hs:53) + Direction (./XMonad/Layout/Spiral.hs:54) + SpiralWithDir (./XMonad/Layout/Spiral.hs:78) +Checking module XMonad.Layout.Simplest... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.Simplest' + Missing documentation for: + Simplest (./XMonad/Layout/Simplest.hs:39) +Checking module XMonad.Layout.Roledex... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Layout.Roledex' + Missing documentation for: + Roledex (./XMonad/Layout/Roledex.hs:45) +Checking module XMonad.Layout.ResizableTile... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Layout.ResizableTile' + Missing documentation for: + ResizableTall (./XMonad/Layout/ResizableTile.hs:55) + MirrorResize (./XMonad/Layout/ResizableTile.hs:52) +Checking module XMonad.Layout.PerWorkspace... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Layout.PerWorkspace' +Checking module XMonad.Layout.PerScreen... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Layout.PerScreen' + Missing documentation for: + PerScreen (./XMonad/Layout/PerScreen.hs:49) + ifWider (./XMonad/Layout/PerScreen.hs:42) +Checking module XMonad.Layout.OneBig... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Layout.OneBig' +Checking module XMonad.Layout.MultiToggle... +Creating interface... + 77% ( 10 / 13) in 'XMonad.Layout.MultiToggle' + Missing documentation for: + HList (./XMonad/Layout/MultiToggle.hs:169) + HCons (./XMonad/Layout/MultiToggle.hs:157) + MultiToggle (./XMonad/Layout/MultiToggle.hs:122) +Checking module XMonad.Layout.MultiColumns... +Creating interface... + 80% ( 4 / 5) in 'XMonad.Layout.MultiColumns' + Missing documentation for: + MultiCol (./XMonad/Layout/MultiColumns.hs:71) +Checking module XMonad.Layout.MouseResizableTile... +Creating interface... + 81% ( 13 / 16) in 'XMonad.Layout.MouseResizableTile' + Missing documentation for: + mouseResizableTile (./XMonad/Layout/MouseResizableTile.hs:131) + MRTMessage (./XMonad/Layout/MouseResizableTile.hs:78) + MouseResizableTile (./XMonad/Layout/MouseResizableTile.hs:103) +Checking module XMonad.Layout.MosaicAlt... +Creating interface... + 25% ( 3 / 12) in 'XMonad.Layout.MosaicAlt' + Missing documentation for: + MosaicAlt (./XMonad/Layout/MosaicAlt.hs:86) + shrinkWindowAlt (./XMonad/Layout/MosaicAlt.hs:75) + expandWindowAlt (./XMonad/Layout/MosaicAlt.hs:75) + tallWindowAlt (./XMonad/Layout/MosaicAlt.hs:76) + wideWindowAlt (./XMonad/Layout/MosaicAlt.hs:76) + resetAlt (./XMonad/Layout/MosaicAlt.hs:81) + Params (./XMonad/Layout/MosaicAlt.hs:85) + Param (./XMonad/Layout/MosaicAlt.hs:84) + HandleWindowAlt (./XMonad/Layout/MosaicAlt.hs:67) +Checking module XMonad.Layout.Mosaic... +Creating interface... + 75% ( 6 / 8) in 'XMonad.Layout.Mosaic' + Missing documentation for: + Aspect (./XMonad/Layout/Mosaic.hs:70) + Mosaic (./XMonad/Layout/Mosaic.hs:92) +Checking module XMonad.Layout.LayoutScreens... +Creating interface... + 71% ( 5 / 7) in 'XMonad.Layout.LayoutScreens' + Missing documentation for: + fixedLayout (./XMonad/Layout/LayoutScreens.hs:97) + FixedLayout (./XMonad/Layout/LayoutScreens.hs:92) +Checking module XMonad.Layout.LayoutModifier... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Layout.LayoutModifier' + Missing documentation for: + LayoutModifier (./XMonad/Layout/LayoutModifier.hs:94) +Checking module XMonad.Layout.LimitWindows... +Creating interface... + 64% ( 9 / 14) in 'XMonad.Layout.LimitWindows' + Missing documentation for: + increaseLimit (./XMonad/Layout/LimitWindows.hs:62) + decreaseLimit (./XMonad/Layout/LimitWindows.hs:65) + setLimit (./XMonad/Layout/LimitWindows.hs:68) + LimitWindows (./XMonad/Layout/LimitWindows.hs:86) + Selection (./XMonad/Layout/LimitWindows.hs:120) +Checking module XMonad.Layout.Magnifier... +Creating interface... + 82% ( 9 / 11) in 'XMonad.Layout.Magnifier' + Missing documentation for: + MagnifyMsg (./XMonad/Layout/Magnifier.hs:110) + Magnifier (./XMonad/Layout/Magnifier.hs:113) +Checking module XMonad.Layout.Master... +Creating interface... + 57% ( 4 / 7) in 'XMonad.Layout.Master' + Missing documentation for: + mastered (./XMonad/Layout/Master.hs:70) + fixMastered (./XMonad/Layout/Master.hs:95) + multimastered (./XMonad/Layout/Master.hs:62) +Checking module XMonad.Layout.Maximize... +Creating interface... + 50% ( 4 / 8) in 'XMonad.Layout.Maximize' + Missing documentation for: + maximize (./XMonad/Layout/Maximize.hs:62) + maximizeRestore (./XMonad/Layout/Maximize.hs:72) + Maximize (./XMonad/Layout/Maximize.hs:61) + MaximizeRestore (./XMonad/Layout/Maximize.hs:70) +Checking module XMonad.Layout.MessageControl... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Layout.MessageControl' +Checking module XMonad.Layout.NoBorders... +Creating interface... + 77% ( 10 / 13) in 'XMonad.Layout.NoBorders' + Missing documentation for: + SmartBorder (./XMonad/Layout/NoBorders.hs:83) + WithBorder (./XMonad/Layout/NoBorders.hs:56) + ConfigurableBorder (./XMonad/Layout/NoBorders.hs:105) +Checking module XMonad.Layout.MultiToggle.Instances... +Creating interface... + 50% ( 1 / 2) in 'XMonad.Layout.MultiToggle.Instances' + Missing documentation for: + StdTransformers (./XMonad/Layout/MultiToggle/Instances.hs:27) +Checking module XMonad.Layout.OnHost... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Layout.OnHost' +Checking module XMonad.Layout.Reflect... +Creating interface... + 62% ( 5 / 8) in 'XMonad.Layout.Reflect' + Missing documentation for: + REFLECTX (./XMonad/Layout/Reflect.hs:104) + REFLECTY (./XMonad/Layout/Reflect.hs:105) + Reflect (./XMonad/Layout/Reflect.hs:91) +Checking module XMonad.Layout.Renamed... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Layout.Renamed' +Checking module XMonad.Layout.Named... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Layout.Named' +Checking module XMonad.Layout.ShowWName... +Creating interface... +Warning: Couldn't find .haddock for export def + 56% ( 5 / 9) in 'XMonad.Layout.ShowWName' + Missing documentation for +XMonad/Layout/SortedLayout.hs:59:44: warning: [-Wunused-top-binds] + Defined but not used: ‘wdProp’ +: + def + defaultSWNConfig (./XMonad/Layout/ShowWName.hs:73) + SWNConfig (./XMonad/Layout/ShowWName.hs:57) + ShowWName (./XMonad/Layout/ShowWName.hs:55) +Checking module XMonad.Layout.SortedLayout... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Layout.SortedLayout' +Checking module XMonad.Layout.Spacing... +Creating interface... + 71% ( 10 / 14) in 'XMonad.Layout.Spacing' + Missing documentation for: + Spacing (./XMonad/Layout/Spacing.hs:52) + SpacingWithEdge (./XMonad/Layout/Spacing.hs:81) + SmartSpacing (./XMonad/Layout/Spacing.hs:103) + SmartSpacingWithEdge (./XMonad/Layout/Spacing.hs:118) +Checking module XMonad.Layout.TrackFloating... +Creating interface... + 80% ( 8 / 10) in 'XMonad.Layout.TrackFloating' + Missing documentation for: + TrackFloating (./XMonad/Layout/TrackFloating.hs:49) + UseTransientFor (./XMonad/Layout/TrackFloating.hs:93) +Checking module XMonad.Layout.WindowArranger... +Creating interface... + 80% ( 8 / 10) in 'XMonad.Layout.WindowArranger' + Missing documentation for: + WindowArrangerMsg (./XMonad/Layout/WindowArranger.hs:81) + WindowArranger (./XMonad/Layout/WindowArranger.hs:104) +Checking module XMonad.Layout.PositionStoreFloat... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Layout.PositionStoreFloat' + Missing documentation for: + positionStoreFloat (./XMonad/Layout/PositionStoreFloat.hs:54) + PositionStoreFloat (./XMonad/Layout/PositionStoreFloat.hs:57) +Checking module XMonad.Layout.SimplestFloat... +Creating interface... + 80% ( 4 / 5) in 'XMonad.Layout.SimplestFloat' + Missing documentation for: + SimplestFloat (./XMonad/Layout/SimplestFloat.hs:48) +Checking module XMonad.Layout.WindowNavigation... +Creating interface... +Warning: Couldn't find .haddock for export def + 27% ( 4 / 15) in 'XMonad.Layout.WindowNavigation' + Missing documentation for: + windowNavigation (./XMonad/Layout/WindowNavigation.hs:104) + configurableNavigation (./XMonad/Layout/WindowNavigation.hs:107) + Navigate (./XMonad/Layout/WindowNavigation.hs:70) + MoveWindowToWindow (./XMonad/Layout/WindowNavigation.hs:67) + navigateColor (./XMonad/Layout/WindowNavigation.hs:87) + navigateBrightness (./XMonad/Layout/WindowNavigation.hs:91) + noNavigateBorders (./XMonad/Layout/WindowNavigation.hs:83) + defaultWNConfig (./XMonad/Layout/WindowNavigation.hs:97) + def + WNConfig (./XMonad/Layout/WindowNavigation.hs:75) + WindowNavigation (./XMonad/Layout/WindowNavigation.hs:102) +Checking module XMonad.Layout.WorkspaceDir... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Layout.WorkspaceDir' + Missing documentation for: + workspaceDir (./XMonad/Layout/WorkspaceDir.hs:79) + changeDir (./XMonad/Layout/WorkspaceDir.hs:89) + WorkspaceDir (./XMonad/Layout/WorkspaceDir.hs:68) +Checking module XMonad.Layout.LayoutBuilder... +Creating interface... + 100% ( 20 / 20) in 'XMonad.Layout.LayoutBuilder' +Checking module XMonad.Layout.LayoutBuilderP... +Creating interface... + 100% ( 10 / 10) in 'XMonad.Layout.LayoutBuilderP' +Checking module XMonad.Layout.IfMax... +Creating interface... + 80% ( 4 / 5) in 'XMonad.Layout.IfMax' + Missing documentation for: + IfMax (./XMonad/Layout/IfMax.hs:51) +Checking module XMonad.Layout.HintedTile... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Layout.HintedTile' + Missing documentation for: + HintedTile (./XMonad/Layout/HintedTile.hs:52) + Orientation (./XMonad/Layout/HintedTile.hs:61) + Alignment (./XMonad/Layout/HintedTile.hs:66) +Checking module XMonad.Layout.HintedGrid... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Layout.HintedGrid' + Missing documentation for: + defaultRatio (./XMonad/Layout/HintedGrid.hs:60) +Checking module XMonad.Layout.Hidden... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Layout.Hidden' +Checking module XMonad.Layout.Groups... +Creating interface... + 94% ( 30 / 32) in 'XMonad.Layout.Groups' + Missing documentation for: + onZipper (./XMonad/Layout/Groups.hs:159) + onLayout (./XMonad/Layout/Groups.hs:156) +Checking module XMonad.Layout.GridVariants... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Layout.GridVariants' +Checking module XMonad.Layout.Grid... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Layout.Grid' + Missing documentation for: + Grid (./XMonad/Layout/Grid.hs:46) + arrange (./XMonad/Layout/Grid.hs:55) + defaultRatio (./XMonad/Layout/Grid.hs:48) +Checking module XMonad.Layout.IM... +Creating interface... + 100% ( 12 / 12) in 'XMonad.Layout.IM' +Checking module XMonad.Layout.Gaps... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Layout.Gaps' +Checking module XMonad.Layout.FixedColumn... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Layout.FixedColumn' +Checking module XMonad.Layout.Dwindle... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Layout.Dwindle' +Checking module XMonad.Layout.Drawer... +Creating interface... + 57% ( 8 / 14) in 'XMonad.Layout.Drawer' + Missing documentation for: + onLeft (./XMonad/Layout/Drawer.hs:121) + onTop (./XMonad/Layout/Drawer.hs:127) + onRight (./XMonad/Layout/Drawer.hs:124) + onBottom (./XMonad/Layout/Drawer.hs:130) + Drawer (./XMonad/Layout/Drawer.hs:57) + Reflected (./XMonad/Layout/Drawer.hs:101) +Checking module XMonad.Layout.DraggingVisualizer... +Creating interface... + 25% ( 1 / 4) in 'XMonad.Layout.DraggingVisualizer' + Missing documentation for: + draggingVisualizer (./XMonad/Layout/DraggingVisualizer.hs:28) + DraggingVisualizerMsg (./XMonad/Layout/DraggingVisualizer.hs:31) + DraggingVisualizer (./XMonad/Layout/DraggingVisualizer.hs:27) +Checking module XMonad.Layout.DragPane... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Layout.DragPane' + Missing documentation for: + dragPane (./XMonad/Layout/DragPane.hs:56) + DragPane (./XMonad/Layout/DragPane.hs:59) + DragType (./XMonad/Layout/DragPane.hs:63) +Checking module XMonad.Layout.Dishes... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.Dishes' + Missing documentation for: + Dishes (./XMonad/Layout/Dishes.hs:42) +Checking module XMonad.Layout.Cross... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Layout.Cross' +Checking module XMonad.Layout.ComboP... +Creating interface... + 57% ( 4 / 7) in 'XMonad.Layout.ComboP' + Missing documentation for: + combineTwoP (./XMonad/Layout/ComboP.hs:77) + CombineTwoP (./XMonad/Layout/ComboP.hs:74) + SwapWindow (./XMonad/Layout/ComboP.hs:69) +Checking module XMonad.Layout.Combo... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Layout.Combo' + Missing documentation for: + combineTwo (./XMonad/Layout/Combo.hs:73) + CombineTwo (./XMonad/Layout/Combo.hs:70) +Checking module XMonad.Layout.LayoutCombinators... +Creating interface... + 27% ( 17 / 63) in 'XMonad.Layout.LayoutCombinators' + Missing documentation for: + *||* (./XMonad/Layout/LayoutCombinators.hs:106) + **||* (./XMonad/Layout/LayoutCombinators.hs:106) + ***||* (./XMonad/Layout/LayoutCombinators.hs:106) + ****||* (./XMonad/Layout/LayoutCombinators.hs:106) + ***||** (./XMonad/Layout/LayoutCombinators.hs:106) + ****||*** (./XMonad/Layout/LayoutCombinators.hs:106) + ***||**** (./XMonad/Layout/LayoutCombinators.hs:106) + *||**** (./XMonad/Layout/LayoutCombinators.hs:106) + **||*** (./XMonad/Layout/LayoutCombinators.hs:106) + *||*** (./XMonad/Layout/LayoutCombinators.hs:106) + *||** (./XMonad/Layout/LayoutCombinators.hs:106) + *//* (./XMonad/Layout/LayoutCombinators.hs:126) + **//* (./XMonad/Layout/LayoutCombinators.hs:126) + ***//* (./XMonad/Layout/LayoutCombinators.hs:126) + ****//* (./XMonad/Layout/LayoutCombinators.hs:126) + ***//** (./XMonad/Layout/LayoutCombinators.hs:126) + ****//*** (./XMonad/Layout/LayoutCombinators.hs:126) + ***//**** (./XMonad/Layout/LayoutCombinators.hs:126) + *//**** (./XMonad/Layout/LayoutCombinators.hs:126) + **//*** (./XMonad/Layout/LayoutCombinators.hs:126) + *//*** (./XMonad/Layout/LayoutCombinators.hs:126) + *//** (./XMonad/Layout/LayoutCombinators.hs:126) + *|* (./XMonad/Layout/LayoutCombinators.hs:145) + **|* (./XMonad/Layout/LayoutCombinators.hs:145) + ***|* (./XMonad/Layout/LayoutCombina +XMonad/Layout/BinarySpacePartition.hs:47:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +XMonad/Hooks/WorkspaceByPos.hs:29:1: warning: [-Wdeprecations] + Module ‘Control.Monad.Error’ is deprecated: + Use Control.Monad.Except instead + +XMonad/Hooks/WorkspaceByPos.hs:47:42: warning: [-Wdeprecations] + In the use of ‘runErrorT’ + (imported from Control.Monad.Error, but defined in transformers-0.5.2.0:Control.Monad.Trans.Error): + Deprecated: "Use Control.Monad.Trans.Except instead" + +XMonad/Hooks/WallpaperSetter.hs:42:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +XMonad/Hooks/WallpaperSetter.hs:44:1: warning: [-Wunused-imports] + The import of ‘Data.Monoid’ is redundant + except perhaps to import instances from ‘Data.Monoid’ + To import instances alone, use: import Data.Monoid() +tors.hs:145) + ****|* (./XMonad/Layout/LayoutCombinators.hs:145) + ***|** (./XMonad/Layout/LayoutCombinators.hs:145) + ****|*** (./XMonad/Layout/LayoutCombinators.hs:145) + ***|**** (./XMonad/Layout/LayoutCombinators.hs:145) + *|**** (./XMonad/Layout/LayoutCombinators.hs:145) + **|*** (./XMonad/Layout/LayoutCombinators.hs:145) + *|*** (./XMonad/Layout/LayoutCombinators.hs:145) + *|** (./XMonad/Layout/LayoutCombinators.hs:145) + */* (./XMonad/Layout/LayoutCombinators.hs:165) + **/* (./XMonad/Layout/LayoutCombinators.hs:165) + ***/* (./XMonad/Layout/LayoutCombinators.hs:165) + ****/* (./XMonad/Layout/LayoutCombinators.hs:165) + ***/** (./XMonad/Layout/LayoutCombinators.hs:165) + ****/*** (./XMonad/Layout/LayoutCombinators.hs:165) + ***/**** (./XMonad/Layout/LayoutCombinators.hs:165) + */**** (./XMonad/Layout/LayoutCombinators.hs:165) + **/*** (./XMonad/Layout/LayoutCombinators.hs:165) + */*** (./XMonad/Layout/LayoutCombinators.hs:165) + */** (./XMonad/Layout/LayoutCombinators.hs:165) + JumpToLayout (./XMonad/Layout/LayoutCombinators.hs:228) + NewSelect (./XMonad/Layout/LayoutCombinators.hs:225) +Checking module XMonad.Prompt.Layout... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Prompt.Layout' + Missing documentation for: + layoutPrompt (./XMonad/Prompt/Layout.hs:47) +Checking module XMonad.Layout.Column... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.Column' + Missing documentation for: + Column (./XMonad/Layout/Column.hs:43) +Checking module XMonad.Layout.Circle... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.Circle' + Missing documentation for: + Circle (./XMonad/Layout/Circle.hs:41) +Checking module XMonad.Layout.CenteredMaster... +Creating interface... + 86% ( 6 / 7) in 'XMonad.Layout.CenteredMaster' + Missing documentation for: + TopRightMaster (./XMonad/Layout/CenteredMaster.hs:55) +Checking module XMonad.Layout.BoringWindows... +Creating interface... + 50% ( 8 / 16) in 'XMonad.Layout.BoringWindows' + Missing documentation for: + boringWindows (./XMonad/Layout/BoringWindows.hs:91) + markBoring (./XMonad/Layout/BoringWindows.hs:78) + clearBoring (./XMonad/Layout/BoringWindows.hs:78) + focusUp (./XMonad/Layout/BoringWindows.hs:78) + focusDown (./XMonad/Layout/BoringWindows.hs:78) + focusMaster (./XMonad/Layout/BoringWindows.hs:78) + BoringMessage (./XMonad/Layout/BoringWindows.hs:65) + BoringWindows (./XMonad/Layout/BoringWindows.hs:85) +Checking module XMonad.Layout.Minimize... +Creating interface... + 43% ( 3 / 7) in 'XMonad.Layout.Minimize' + Missing documentation for: + minimize (./XMonad/Layout/Minimize.hs:71) + minimizeWindow (./XMonad/Layout/Minimize.hs:80) + MinimizeMsg (./XMonad/Layout/Minimize.hs:74) + Minimize (./XMonad/Layout/Minimize.hs:70) +Checking module XMonad.Layout.BinarySpacePartition... +Creating interface... + 100% ( 12 / 12) in 'XMonad.Layout.BinarySpacePartition' +Checking module XMonad.Layout.AvoidFloats... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Layout.AvoidFloats' +Checking module XMonad.Layout.AutoMaster... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Layout.AutoMaster' +Checking module XMonad.Layout.Accordion... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Layout.Accordion' + Missing documentation for: + Accordion (./XMonad/Layout/Accordion.hs:40) +Checking module XMonad.Hooks.XPropManage... +Creating interface... + 43% ( 3 / 7) in 'XMonad.Hooks.XPropManage' + Missing documentation for: + xPropManageHook (./XMonad/Hooks/XPropManage.hs:69) + XPropMatch (./XMonad/Hooks/XPropManage.hs:61) + pmX (./XMonad/Hooks/XPropManage.hs:63) + pmP (./XMonad/Hooks/XPropManage.hs:66) +Checking module XMonad.Hooks.WorkspaceHistory... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Hooks.WorkspaceHistory' +Checking module XMonad.Hooks.WorkspaceByPos... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Hooks.WorkspaceByPos' + Missing documentation for: + workspaceByPos (./XMonad/Hooks/WorkspaceByPos.hs:40) +Checking module XMonad.Hooks.WallpaperSetter... +Creating interface... + 91% ( 10 / 11) in 'XMonad.Hooks.WallpaperSetter' + Missing documentation for: + WallpaperList (./XMonad/Hooks/WallpaperSetter.hs:81) +Checking module XMonad.Hooks.UrgencyHook... +Creating interface... + 88% ( 45 / 51) in 'XMonad.Hooks.UrgencyHook' + Missing documentation for: + NoUrgencyHook (./XMonad/Hooks/UrgencyHook.hs:448) + BorderUrgencyHook (./XMonad/Hooks/UrgencyHook.hs:495) + FocusHook (./XMonad/Hooks/UrgencyHook.hs:477) + StdoutUrgencyHook (./XMonad/Hooks/UrgencyHook.hs:528) + SpawnUrgencyHook (./XMonad/Hooks/UrgencyHook.hs:520) + Interval (./XMonad/Hooks/UrgencyHook.hs:294) +Checking module XMonad.Layout.Decoration... +Creating interface... +Warning: Couldn't find .haddock for export def + 68% ( 17 / 25) in 'XMonad.Layout.Decoration' + Missing documentation for: + def + Shrinker (./XMonad/Layout/Decoration.hs:453) + DefaultShrinker (./XMonad/Layout/Decoration.hs:456) + shrinkText (./XMonad/Layout/Decoration.hs:463) + CustomShrink (./XMonad/Layout/Decoration.hs:449) + shrinkWhile (./XMonad/Layout/Decoration.hs:439) + findWindowByDecoration (./XMonad/Layout/Decoration.hs:337) + OrigWin (./XMonad/Layout/Decoration.hs:127) +Checking module XMonad.Layout.BorderResize... +Creating interface... + 43% ( 3 / 7) in 'XMonad.Layout.BorderResize' + Missing documentation for: + borderResize (./XMonad/Layout/BorderResize.hs:65) + BorderResize (./XMonad/Layout/BorderResize.hs:60) + RectWithBorders (./XMonad/Layout/BorderResize.hs:58) + BorderInfo (./XMonad/Layout/BorderResize.hs:53) +Checking module XMonad.Layout.DwmStyle... +Creating interface... +Warning: Couldn't find .haddock for export def + 55% ( 6 / 11) in 'XMonad.Layout.DwmStyle' + Missing documentation for: + def + DwmStyle (./XMonad/Layout/DwmStyle.hs:72) + shrinkText (./XMonad/Layout/Decoration.hs:463) + CustomShrink (./XMonad/Layout/Decoration.hs:449) + Shrinker (./XMonad/Layout/Decoration.hs:453) +Checking module XMonad.Layout.LayoutHints... +Creating interface... + 67% ( 6 / 9) in 'XMonad.Layout.LayoutHints' + Missing documentation for: + layoutHints (./XMonad/Layout/LayoutHints.hs:80) + LayoutHints (./XMonad/Layout/LayoutHints.hs:103) + LayoutHintsToCenter (./XMonad/Layout/LayoutHints.hs:143) +Checking module XMonad.Layout.ResizeScreen... +Creating interface... + 30% ( 3 / 10) in 'XMonad.Layout.ResizeScreen' + Missing documentation for: + resizeHorizontal (./XMonad/Layout/ResizeScreen.hs:45) + resizeVertical (./XMonad/Layout/ResizeScreen.hs:48) + resizeHorizontalRight (./XMonad/Layout/ResizeScreen.hs:51) + resizeVerticalBottom (./XMonad/Layout/ResizeScreen.hs:54) + withNewRectangle (./XMonad/Layout/ResizeScreen.hs:57) + ResizeScreen (./XMonad/Layout/ResizeScreen.hs:60) + ResizeMode (./XMonad/Layout/ResizeScreen.hs:64) +Checking module XMonad.Layout.SimpleDecoration... +Creating interface... +Warning: Couldn't find .haddock for export def + 55% ( 6 / 11) in 'XMonad.Layout.SimpleDecoration' + Missing documentation for: + def + SimpleDecoration (./XMonad/Layout/SimpleDecoration.hs:63) + shrinkText (./XMonad/Layout/Decoration.hs:463) + CustomShrink (./XMonad/Layout/Decoration.hs:449) + Shrinker (./XMonad/Layout/Decoration.hs:453) +Checking module XMonad.Layout.NoFrillsDecoration... +Creating interface... + 83% ( 5 / 6) in 'XMonad.Layout.NoFrillsDecoration' + Missing documentation for: + NoFrillsDecoration (./XMonad/Layout/NoFrillsDecoration.hs:49) +Checking module XMonad.Layout.TabBarDecoration... +Creating interface... +Warning: Couldn't find .haddock for export def + 64% ( 7 / 11) in 'XMonad.Layout.TabBarDecoration' + Missing documentation for: + def + shrinkText (./XMonad/Layout/Decoration.hs:463) + TabBarDecoration (./XMonad/Layout/TabBarDecoration.hs:64) + XPPosition (./XMonad/Prompt.hs:229) +Checking module XMonad.Layout.Tabbed... +Creating interface... +Warning: Couldn't find .haddock for export def + 64% ( 23 / 36) in 'XMonad.Layout.Tabbed' + Missing documentation for: + simpleTabbedAlways (./XMonad/ +XMonad/Hooks/ManageDocks.hs:158:5: warning: [-Wname-shadowing] + This binding for ‘docks’ shadows the existing binding + defined at XMonad/Hooks/ManageDocks.hs:90:1 + +XMonad/Hooks/DynamicProperty.hs:30:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +XMonad/Hooks/DebugEvents.hs:50:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() +Layout/Tabbed.hs:95) + tabbedAlways (./XMonad/Layout/Tabbed.hs:124) + addTabsAlways (./XMonad/Layout/Tabbed.hs:159) + tabbedBottomAlways (./XMonad/Layout/Tabbed.hs:134) + addTabsBottomAlways (./XMonad/Layout/Tabbed.hs:168) + addTabsLeftAlways (./XMonad/Layout/Tabbed.hs:178) + addTabsRightAlways (./XMonad/Layout/Tabbed.hs:178) + def + TabbedDecoration (./XMonad/Layout/Tabbed.hs:194) + shrinkText (./XMonad/Layout/Decoration.hs:463) + CustomShrink (./XMonad/Layout/Decoration.hs:449) + Shrinker (./XMonad/Layout/Decoration.hs:453) + TabbarShown (./XMonad/Layout/Tabbed.hs:192) +Checking module XMonad.Layout.SubLayouts... +Creating interface... + 90% ( 18 / 20) in 'XMonad.Layout.SubLayouts' + Missing documentation for: + Broadcast (./XMonad/Layout/SubLayouts.hs:273) + Sublayout (./XMonad/Layout/SubLayouts.hs:221) +Checking module XMonad.Layout.ZoomRow... +Creating interface... + 100% ( 16 / 16) in 'XMonad.Layout.ZoomRow' +Checking module XMonad.Util.Themes... +Creating interface... + 81% ( 17 / 21) in 'XMonad.Util.Themes' + Missing documentation for: + listOfThemes (./XMonad/Util/Themes.hs:90) + ppThemeInfo (./XMonad/Util/Themes.hs:84) + wfarrTheme (./XMonad/Util/Themes.hs:204) + ThemeInfo (./XMonad/Util/Themes.hs:74) +Checking module XMonad.Prompt.Theme... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Prompt.Theme' + Missing documentation for: + themePrompt (./XMonad/Prompt/Theme.hs:50) + ThemePrompt (./XMonad/Prompt/Theme.hs:43) +Checking module XMonad.Hooks.ToggleHook... +Creating interface... + 70% ( 14 / 20) in 'XMonad.Hooks.ToggleHook' + Missing documentation for: + toggleHook' (./XMonad/Hooks/ToggleHook.hs:110) + toggleHookNext (./XMonad/Hooks/ToggleHook.hs:121) + toggleHookAllNew (./XMonad/Hooks/ToggleHook.hs:129) + willHookNextPP (./XMonad/Hooks/ToggleHook.hs:163) + willHookAllNewPP (./XMonad/Hooks/ToggleHook.hs:166) + runLogHook (./XMonad/Hooks/ToggleHook.hs:169) +Checking module XMonad.Hooks.SetWMName... +Creating interface... + 100% ( 2 / 2) in 'XMonad.Hooks.SetWMName' +Checking module XMonad.Hooks.Script... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Hooks.Script' +Checking module XMonad.Hooks.ScreenCorners... +Creating interface... + 82% ( 9 / 11) in 'XMonad.Hooks.ScreenCorners' + Missing documentation for: + ScreenCorner (./XMonad/Hooks/ScreenCorners.hs:42) + screenCornerLayoutHook (./XMonad/Hooks/ScreenCorners.hs:162) +Checking module XMonad.Hooks.RestoreMinimized... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Hooks.RestoreMinimized' + Missing documentation for: + RestoreMinimized (./XMonad/Hooks/RestoreMinimized.hs:39) + restoreMinimizedEventHook (./XMonad/Hooks/RestoreMinimized.hs:41) +Checking module XMonad.Hooks.Minimize... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Hooks.Minimize' + Missing documentation for: + minimizeEventHook (./XMonad/Hooks/Minimize.hs:39) +Checking module XMonad.Hooks.ManageHelpers... +Creating interface... + 96% ( 27 / 28) in 'XMonad.Hooks.ManageHelpers' + Missing documentation for: + pid (./XMonad/Hooks/ManageHelpers.hs:153) +Checking module XMonad.Layout.Fullscreen... +Creating interface... + 83% ( 15 / 18) in 'XMonad.Layout.Fullscreen' + Missing documentation for: + FullscreenFloat (./XMonad/Layout/Fullscreen.hs:99) + FullscreenFocus (./XMonad/Layout/Fullscreen.hs:96) + FullscreenFull (./XMonad/Layout/Fullscreen.hs:93) +Checking module XMonad.Hooks.ManageDocks... +Creating interface... + 87% ( 13 / 15) in 'XMonad.Hooks.ManageDocks' + Missing documentation for: + AvoidStruts (./XMonad/Hooks/ManageDocks.hs:209) + docksStartupHook (./XMonad/Hooks/ManageDocks.hs:154) +Checking module XMonad.Hooks.PositionStoreHooks... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Hooks.PositionStoreHooks' + Missing documentation for: + positionStoreManageHook (./XMonad/Hooks/PositionStoreHooks.hs:69) + positionStoreEventHook (./XMonad/Hooks/PositionStoreHooks.hs:101) +Checking module XMonad.Hooks.InsertPosition... +Creating interface... + 67% ( 4 / 6) in 'XMonad.Hooks.InsertPosition' + Missing documentation for: + Focus (./XMonad/Hooks/InsertPosition.hs:42) + Position (./XMonad/Hooks/InsertPosition.hs:41) +Checking module XMonad.Hooks.ICCCMFocus... +Creating interface... +Warning: Couldn't find .haddock for export atom_WM_TAKE_FOCUS + 50% ( 2 / 4) in 'XMonad.Hooks.ICCCMFocus' + Missing documentation for: + atom_WM_TAKE_FOCUS + takeFocusX (./XMonad/Hooks/ICCCMFocus.hs:32) +Checking module XMonad.Hooks.FloatNext... +Creating interface... + 72% ( 13 / 18) in 'XMonad.Hooks.FloatNext' + Missing documentation for: + toggleFloatNext (./XMonad/Hooks/FloatNext.hs:78) + toggleFloatAllNew (./XMonad/Hooks/FloatNext.hs:86) + willFloatNextPP (./XMonad/Hooks/FloatNext.hs:116) + willFloatAllNewPP (./XMonad/Hooks/FloatNext.hs:119) + runLogHook (./XMonad/Hooks/ToggleHook.hs:169) +Checking module XMonad.Hooks.FadeInactive... +Creating interface... + 100% ( 12 / 12) in 'XMonad.Hooks.FadeInactive' +Checking module XMonad.Hooks.FadeWindows... +Creating interface... + 96% ( 25 / 26) in 'XMonad.Hooks.FadeWindows' + Missing documentation for: + Opacity (./XMonad/Hooks/FadeWindows.hs:130) +Checking module XMonad.Layout.Monitor... +Creating interface... + 92% ( 12 / 13) in 'XMonad.Layout.Monitor' + Missing documentation for: + Monitor (./XMonad/Layout/Monitor.hs:91) +Checking module XMonad.Hooks.EwmhDesktops... +Creating interface... + 100% ( 10 / 10) in 'XMonad.Hooks.EwmhDesktops' +Checking module XMonad.Hooks.DynamicProperty... +Creating interface... + 100% ( 3 / 3) in 'XMonad.Hooks.DynamicProperty' +Checking module XMonad.Hooks.DynamicLog... +Creating interface... +Warning: Couldn't find .haddock for export def + 92% ( 35 / 38) in 'XMonad.Hooks.DynamicLog' + Missing documentation for: + def + xmobarStripTags (./XMonad/Hooks/DynamicLog.hs:406) + pprWindowSetXinerama (./XMonad/Hooks/DynamicLog.hs:322) +Checking module XMonad.Layout.IndependentScreens... +Creating interface... + 55% ( 11 / 20) in 'XMonad.Layout.IndependentScreens' + Missing documentation for: + VirtualWorkspace (./XMonad/Layout/IndependentScreens.hs:80) + PhysicalWorkspace (./XMonad/Layout/IndependentScreens.hs:81) + workspaces' (./XMonad/Layout/IndependentScreens.hs:102) + withScreens (./XMonad/Layout/IndependentScreens.hs:105) + onCurrentScreen (./XMonad/Layout/IndependentScreens.hs:110) + marshall (./XMonad/Layout/IndependentScreens.hs:91) + unmarshall (./XMonad/Layout/IndependentScreens.hs:94) + unmarshallS (./XMonad/Layout/IndependentScreens.hs:95) + unmarshallW (./XMonad/Layout/IndependentScreens.hs:96) +Checking module XMonad.Util.Loggers... +Creating interface... +Warning: Couldn't find .haddock for export <$> + 97% ( 29 / 30) in 'XMonad.Util.Loggers' + Missing documentation for: + <$> +Checking module XMonad.Hooks.DynamicHooks... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Hooks.DynamicHooks' +Checking module XMonad.Hooks.DynamicBars... +Creating interface... + 25% ( 3 / 12) in 'XMonad.Hooks.DynamicBars' + Missing documentation for: + DynamicStatusBar (./XMonad/Hooks/DynamicBars.hs:94) + DynamicStatusBarCleanup (./XMonad/Hooks/DynamicBars.hs:95) + DynamicStatusBarPartialCleanup (./XMonad/Hooks/DynamicBars.hs:96) + dynStatusBarStartup (./XMonad/Hooks/DynamicBars.hs:104) + dynStatusBarStartup' (./XMonad/Hooks/DynamicBars.hs:109) + dynStatusBarEventHook (./XMonad/Hooks/DynamicBars.hs:114) + dynStatusBarEventHook' (./XMonad/Hooks/DynamicBars.hs:117) + multiPP (./XMonad/Hooks/DynamicBars.hs:154) + multiPPFormat (./XMonad/Hooks/DynamicBars.hs:159) +Checking module XMonad.Hooks.DebugStack... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Hooks.DebugStack' +Checking module XMonad.Hooks.DebugKeyEvents... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Hooks.DebugKeyEvents' +Checking module XMonad.Hooks.DebugEvents... +Creating interface... + 100% ( 2 / 2) in 'XMonad.Hooks.DebugEvents' +Checking module XMonad.Hooks.CurrentWorkspaceOnTop... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Hooks.CurrentWorkspaceOnTop' + Missing documentation for: + curre +XMonad/Actions/TreeSelect.hs:63:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +XMonad/Config/Dmwit.hs:7:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() +ntWorkspaceOnTop (./XMonad/Hooks/CurrentWorkspaceOnTop.hs:48) +Checking module XMonad.Doc.Extending... +Creating interface... + 100% ( 33 / 33) in 'XMonad.Doc.Extending' +Checking module XMonad.Doc.Developing... +Creating interface... + 100% ( 19 / 19) in 'XMonad.Doc.Developing' +Checking module XMonad.Doc.Configuring... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Doc.Configuring' +Checking module XMonad.Doc... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Doc' +Checking module XMonad.Config.Desktop... +Creating interface... + 88% ( 14 / 16) in 'XMonad.Config.Desktop' + Missing documentation for: + desktopConfig (./XMonad/Config/Desktop.hs:167) + desktopLayoutModifiers (./XMonad/Config/Desktop.hs:175) +Checking module XMonad.Config.Gnome... +Creating interface... + 71% ( 5 / 7) in 'XMonad.Config.Gnome' + Missing documentation for: + gnomeConfig (./XMonad/Config/Gnome.hs:43) + desktopLayoutModifiers (./XMonad/Config/Desktop.hs:175) +Checking module XMonad.Config.Kde... +Creating interface... + 50% ( 3 / 6) in 'XMonad.Config.Kde' + Missing documentation for: + kdeConfig (./XMonad/Config/Kde.hs:42) + kde4Config (./XMonad/Config/Kde.hs:46) + desktopLayoutModifiers (./XMonad/Config/Desktop.hs:175) +Checking module XMonad.Config.Mate... +Creating interface... + 71% ( 5 / 7) in 'XMonad.Config.Mate' + Missing documentation for: + mateConfig (./XMonad/Config/Mate.hs:45) + desktopLayoutModifiers (./XMonad/Config/Desktop.hs:175) +Checking module XMonad.Config.Xfce... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Config.Xfce' + Missing documentation for: + xfceConfig (./XMonad/Config/Xfce.hs:38) + desktopLayoutModifiers (./XMonad/Config/Desktop.hs:175) +Checking module XMonad.Config.Bepo... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Config.Bepo' + Missing documentation for: + bepoConfig (./XMonad/Config/Bepo.hs:40) + bepoKeys (./XMonad/Config/Bepo.hs:42) +Checking module XMonad.Config.Azerty... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Config.Azerty' + Missing documentation for: + azertyConfig (./XMonad/Config/Azerty.hs:41) + azertyKeys (./XMonad/Config/Azerty.hs:43) +Checking module XMonad.Actions.WithAll... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Actions.WithAll' +Checking module XMonad.Layout.Stoppable... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Layout.Stoppable' +Checking module XMonad.Actions.WindowNavigation... +Creating interface... + 40% ( 4 / 10) in 'XMonad.Actions.WindowNavigation' + Missing documentation for: + withWindowNavigation (./XMonad/Actions/WindowNavigation.hs:87) + withWindowNavigationKeys (./XMonad/Actions/WindowNavigation.hs:99) + WNAction (./XMonad/Actions/WindowNavigation.hs:108) + go (./XMonad/Actions/WindowNavigation.hs:117) + swap (./XMonad/Actions/WindowNavigation.hs:120) + WNState (./XMonad/Actions/WindowNavigation.hs:110) +Checking module XMonad.Actions.WindowGo... +Creating interface... +Warning: XMonad.Actions.WindowGo: Could not find documentation for exported module: XMonad.ManageHook + 100% ( 19 / 19) in 'XMonad.Actions.WindowGo' +Checking module XMonad.Prompt.RunOrRaise... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Prompt.RunOrRaise' + Missing documentation for: + runOrRaisePrompt (./XMonad/Prompt/RunOrRaise.hs:53) + RunOrRaisePrompt (./XMonad/Prompt/RunOrRaise.hs:49) +Checking module XMonad.Actions.WindowBringer... +Creating interface... + 94% ( 17 / 18) in 'XMonad.Actions.WindowBringer' + Missing documentation for: + WindowBringerConfig (./XMonad/Actions/WindowBringer.hs:50) +Checking module XMonad.Actions.Warp... +Creating interface... + 88% ( 7 / 8) in 'XMonad.Actions.Warp' + Missing documentation for: + Corner (./XMonad/Actions/Warp.hs:50) +Checking module XMonad.Actions.UpdatePointer... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.UpdatePointer' +Checking module XMonad.Layout.MagicFocus... +Creating interface... + 89% ( 8 / 9) in 'XMonad.Layout.MagicFocus' + Missing documentation for: + MagicFocus (./XMonad/Layout/MagicFocus.hs:56) +Checking module XMonad.Actions.UpdateFocus... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Actions.UpdateFocus' +Checking module XMonad.Actions.TreeSelect... +Creating interface... +Warning: Couldn't find .haddock for export Pixel + 97% ( 28 / 29) in 'XMonad.Actions.TreeSelect' + Missing documentation for: + Pixel +Checking module XMonad.Actions.TopicSpace... +Creating interface... +Warning: Couldn't find .haddock for export def + 91% ( 21 / 23) in 'XMonad.Actions.TopicSpace' + Missing documentation for: + def + defaultTopicConfig (./XMonad/Actions/TopicSpace.hs:219) +Checking module XMonad.Actions.TagWindows... +Creating interface... + 65% ( 15 / 23) in 'XMonad.Actions.TagWindows' + Missing documentation for: + withFocusedP (./XMonad/Actions/TagWindows.hs:163) + withTagged (./XMonad/Actions/TagWindows.hs:152) + withTaggedGlobal (./XMonad/Actions/TagWindows.hs:152) + shiftHere (./XMonad/Actions/TagWindows.hs:166) + shiftToScreen (./XMonad/Actions/TagWindows.hs:169) + tagPrompt (./XMonad/Actions/TagWindows.hs:180) + tagDelPrompt (./XMonad/Actions/TagWindows.hs:191) + TagPrompt (./XMonad/Actions/TagWindows.hs:174) +Checking module XMonad.Actions.Submap... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Actions.Submap' +Checking module XMonad.Util.NamedActions... +Creating interface... + 70% ( 14 / 20) in 'XMonad.Util.NamedActions' + Missing documentation for: + showKmSimple (./XMonad/Util/NamedActions.hs:186) + showKm (./XMonad/Util/NamedActions.hs:196) + oneName (./XMonad/Util/NamedActions.hs:305) + addName (./XMonad/Util/NamedActions.hs:308) + subtitle (./XMonad/Util/NamedActions.hs:296) + HasName (./XMonad/Util/NamedActions.hs:123) +Checking module XMonad.Util.EZConfig... +Creating interface... + 93% ( 14 / 15) in 'XMonad.Util.EZConfig' + Missing documentation for: + mkNamedKeymap (./XMonad/Util/EZConfig.hs:359) +Checking module XMonad.Config.Prime... +Creating interface... +Warning: XMonad.Config.Prime: Could not find documentation for exported module: XMonad +Warning: XMonad.Config.Prime: Could not find documentation for exported module: Prelude + 94% ( 63 / 67) in 'XMonad.Config.Prime' + Missing documentation for: + SettableClass (./XMonad/Config/Prime.hs:201) + UpdateableClass (./XMonad/Config/Prime.hs:197) + SummableClass (./XMonad/Config/Prime.hs:254) + RemovableClass (./XMonad/Config/Prime.hs:349) +Checking module XMonad.Hooks.ManageDebug... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Hooks.ManageDebug' +Checking module XMonad.Util.Paste... +Creating interface... +Warning: Couldn't find .haddock for export noModMask + 78% ( 7 / 9) in 'XMonad.Util.Paste' + Missing documentation for: + sendKey (./XMonad/Util/Paste.hs:78) + noModMask +Checking module XMonad.Actions.SpawnOn... +Creating interface... + 82% ( 9 / 11) in 'XMonad.Actions.SpawnOn' + Missing documentation for: + Spawner (./XMonad/Actions/SpawnOn.hs:65) + manageSpawnWithGC (./XMonad/Actions/SpawnOn.hs:80) +Checking module XMonad.Config.Dmwit... +Creating interface... + 0% ( 0 / 61) in 'XMonad.Config.Dmwit' + Missing documentation for: + Module header + outputOf (./XMonad/Config/Dmwit.hs:39) + geomMean (./XMonad/Config/Dmwit.hs:46) + arithMean (./XMonad/Config/Dmwit.hs:49) + namedNumbers (./XMonad/Config/Dmwit.hs:52) + splitColon (./XMonad/Config/Dmwit.hs:59) + parse (./XMonad/Config/Dmwit.hs:63) + modVolume (./XMonad/Config/Dmwit.hs:70) + centerMouse (./XMonad/Config/Dmwit.hs:83) + statusBarMouse (./XMonad/Config/Dmwit.hs:84) + withScreen (./XMonad/Config/Dmwit.hs:85) + makeLauncher (./XMonad/Config/Dmwit.hs:87) + launcher (./XMonad/Config/Dmwit.hs:89) + termLauncher (./XMonad/Config/Dmwit.hs:90) + viewShift (./XMonad/Config/Dmwit.hs:91) + floatAll (./XMonad/Config/Dmwit.hs:92) + sinkFocus (./XMonad/Config/Dmwit.hs:93) + showMod (./XMonad/Config/Dmwit.hs:94) + volumeDzen (./XMonad/Config/Dmwit.hs:95) + altMask (./XMonad/Config/Dmwit.hs:97) + bright (./XMonad/Config/Dmwit.hs:98) + dark (./XMonad/Config/Dmwit.hs:99) + fullscreen43on169 (./XMonad/Config/Dmwit.hs:101) + fullscreenMPlayer (./XMonad/Config/Dmwit.hs:106) + operationOn (./XMonad/Config/Dmwit.hs:118) + viewFullOn (./XMonad/Config/Dmwit.hs:123) + centerWineOn (./XMonad/Config/Dmwit.hs:124) + PPrint (./XMonad/Config/Dmwit.hs:127) + PPrintable (./XMonad/Config/Dmwit.hs:131) + (./XMonad/Config/Dmwit.hs:132) + (./XMonad/Config/Dmwit.hs:133) + record (./XMonad/Config/Dmwit.hs:135) + (./XMonad/Config/Dmwit.hs:143) + (./XMonad/Config/Dmwit.hs:147) + (./XMonad/Config/Dmwit.hs:156) + (./XMonad/Config/Dmwit.hs:164) + (./XMonad/Config/Dmwit.hs:171) + (./XMonad/Config/Dmwit.hs:178) + (./XMonad/Config/Dmwit.hs:181) + (./XMonad/Config/Dmwit.hs:188) + (./XMonad/Config/Dmwit.hs:196) + (./XMonad/Config/Dmwit.hs:197) + (./XMonad/Config/Dmwit.hs:198) + (./XMonad/Config/Dmwit.hs:199) + (./XMonad/Config/Dmwit.hs:200) + (./XMonad/Config/Dmwit.hs:201) + (./XMonad/Config/Dmwit.hs:202) + (./XMonad/Config/Dmwit.hs:203) + (./XMonad/Config/Dmwit.hs:204) + (./XMonad/Config/Dmwit.hs:205) + dmwitConfig (./XMonad/Config/Dmwit.hs:208) + main (./XMonad/Config/Dmwit.hs:230) + keyBindings (./XMonad/Config/Dmwit.hs:233) + atSchool (./XMonad/Config/Dmwit.hs:277) + anyMask (./XMonad/Config/Dmwit.hs:284) + pipeName (./XMonad/Config/Dmwit.hs:290) + xmobarCommand (./XMonad/Config/Dmwit.hs:292) + allPPs (./XMonad/Config/Dmwit.hs:305) + color (./XMonad/Config/Dmwit.hs:306) + ppFocus (./XMonad/Config/Dmwit.hs:308) + ppWorkspaces (./XMonad/Config/Dmwit.hs:313) +Checking module XMonad.Actions.SinkAll... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.SinkAll' +Checking module XMonad.Actions.SimpleDate... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Actions.SimpleDate' + Missing documentation for: + date (./XMonad/Actions/SimpleDate.hs:39) +Checking module XMonad.Actions.ShowText... +Creating interface... +Warning: Couldn't find .haddock for export def + 62% ( 5 / 8) in 'XMonad.Actions.ShowText' + Missing documentation for: + def + defaultSTConfig (./XMonad/Actions/ShowText.hs:84) + ShowTextConfig (./XMonad/Actions/ShowText.hs:70) +Checking module XMonad.Actions.Search... +Creating interface... +Warning: Couldn't find .haddock for export isPrefixOf + 38% ( 20 / 53) in 'XMonad.Actions.Search' + Missing documentation for: + SearchEngine (./XMonad/Actions/Search.hs:233) + isPrefixOf + amazon (./XMonad/Actions/Search.hs:284) + alpha (./XMonad/Actions/Search.hs:284) + codesearch (./XMonad/Actions/Search.hs:284) + deb (./XMonad/Actions/Search.hs:284) + debbts (./XMonad/Actions/Search.hs:284) + debpts (./XMonad/Actions/Search.hs:284) + dictionary (./XMonad/Actions/Search.hs:284) + google (./XMonad/Actions/Search.hs:284) + hackage (./XMonad/Actions/Search.hs:284) + hoogle (./XMonad/Actions/Search.hs:284) + images (./XMonad/Actions/Search.hs:284) + imdb (./XMonad/Actions/Search.hs:284) + isohunt (./XMonad/Actions/Search.hs:284) + lucky (./XMonad/Actions/Search.hs:284) + maps (./XMonad/Actions/Search.hs:284) + mathworld (./XMonad/Actions/Search.hs:284) + openstreetmap (./XMonad/Actions/Search.hs:284) + scholar (./XMonad/Actions/Search.hs:284) + stackage (./XMonad/Actions/Search.hs:284) + thesaurus (./XMonad/Actions/Search.hs:284) + wayback (./XMonad/Actions/Search.hs:284) + wikipedia (./XMonad/Actions/Search.hs:284) + wiktionary (./XMonad/Actions/Search.hs:284) + youtube (./XMonad/Actions/Search.hs:284) + vocabulary (./XMonad/Actions/Search.hs:284) + duckduckgo (./XMonad/Actions/Search.hs:284) + multi (./XMonad/Actions/Search.hs:314) + Browser (./XMonad/Actions/Search.hs:229) + Site (./XMonad/Actions/Search.hs:231) + Query (./XMonad/Actions/Search.hs:230) + Name (./XMonad/Actions/Search.hs:232) +Checking module XMonad.Actions.RotSlaves... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Actions.RotSlaves' +Checking module XMonad.Actions.RandomBackground... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Actions.RandomBackground' +Checking module XMonad.Actions.Promote... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.Promote' +Checking module XMonad.Actions.Plane... +Creating interface... + 100% ( 12 / 12) in 'XMonad.Actions.Plane' +Checking module XMonad.Actions.PhysicalScreens... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Actions.PhysicalScreens' +Checking module XMonad.Actions.PerWorkspaceKeys... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Actions.PerWorkspaceKeys' +Checking module XMonad.Actions.OnScreen... +Creating interface... + 100% ( 11 / 11) in 'XMonad.Actions.OnScreen' +Checking module XMonad.Actions.Workscreen... +Creating interface... + 80% ( 8 / 10) in 'XMonad.Actions.Workscreen' + Missing documentation for: + Workscreen (./XMonad/Actions/Workscreen.hs:61) + WorkscreenId (./XMonad/Actions/Workscreen.hs:62) +Checking module XMonad.Actions.NoBorders... +Creating interface... + 100% ( 2 / 2) in 'XMonad.Actions.NoBorders' +Checking module XMonad.Actions.Navigation2D... +Creating interface... +Warning: Couldn't find .haddock for export def + 94% ( 31 / 33) in 'XMonad.Actions.Navigation2D' + Missing documentation for: + def + defaultNavigation2DConfig (./XMonad/Actions/Navigation2D.hs:416) +Checking module XMonad.Actions.MouseResize... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Actions.MouseResize' + Missing documentation for: + mouseResize (./XMonad/Actions/MouseResize.hs:56) + MouseResize (./XMonad/Actions/MouseResize.hs:59) +Checking module XMonad.Layout.SimpleFloat... +Creating interface... + 50% ( 5 / 10) in 'XMonad.Layout.SimpleFloat' + Missing documentation for: + SimpleDecoration (./XMonad/Layout/SimpleDecoration.hs:63) + SimpleFloat (./XMonad/Layout/SimpleFloat.hs:63) + shrinkText (./XMonad/Layout/Decoration.hs:463) + CustomShrink (./XMonad/Layout/Decoration.hs:449) + Shrinker (./XMonad/Layout/Decoration.hs:453) +Checking module XMonad.Layout.DecorationMadness... +Creating interface... +Warning: Couldn't find .haddock for export def + 96% ( 69 / 72) in 'XMonad.Layout.DecorationMadness' + Missing documentation for: + floatSimple (./XMonad/Layout/DecorationMadness.hs:546) + def + shrinkText (./XMonad/Layout/Decoration.hs:463) +Checking module XMonad.Actions.MouseGestures... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Actions.MouseGestures' +Checking module XMonad.Actions.MessageFeedback... +Creating interface... + 64% ( 7 / 11) in 'XMonad.Actions.MessageFeedback' + Missing documentation for: + tryMessage_ (./XMonad/Actions/MessageFeedback.hs:72) + tryInOrder_ (./XMonad/Actions/MessageFeedback.hs:82) + sendSM (./XMonad/Actions/MessageFeedback.hs:91) + sendSM_ (./XMonad/Actions/MessageFeedback.hs:98) +Checking module XMonad.Layout.Groups.Helpers... +Creating interface... + 100% ( 23 / 23) in 'XMonad.Layout.Groups.Helpers' +Checking module XMonad.Layout.Groups.Examples... +Creating interface... +Warning: Couldn't find .haddock for export def + 76% ( 25 / 33) in 'XMonad.Layout.Groups.Examples' + Missing documentation for: + rowOfColumns (./XMonad/Layout/Groups/Examples.hs:133) + tallTabs (./XMonad/Layout/Groups/Examples.hs:214) + mirrorTallTabs (./XMonad/Layout/Groups/Examples.hs:216) + fullTabs (./XMonad/Layout/Groups/Examples.hs:212) + def + defaultTiledTabsConfig (./XMonad/Layout/Groups/Examples.hs:209) + shrinkText (./XMonad/Layout/Decoration.hs:463) + zoomRowG (./XMonad/Layout/Groups/Examples.hs:103) +Checking module XMonad.Layout.Groups.Wmii... +Creating interface... +Warning: Couldn't find .haddock for export def + 88% ( 15 / 17) in 'XMonad.Layout.Groups.Wmii' + Missing documentation for: + shrinkText (./XMonad/Layout/Decoration.hs:463) + def +Checking module XMonad.Actions.LinkWorkspaces... +Creating interface... + 67% ( 6 / 9) in 'XMonad.Actions.LinkWorkspaces' + Missing documentation for: + switchWS (./XMonad/Actions/LinkWorkspaces.hs:83) + defaultMessageConf (./XMonad/Actions/LinkWorkspaces.hs:68) + MessageConfig (./XMonad/Actions/LinkWorkspaces.hs:62) +Checking module XMonad.Actions.Launcher... +Creating inter +XMonad/Actions/GridSelect.hs:86:1: warning: [-Wunused-imports] + The import of ‘Control.Applicative’ is redundant + except perhaps to import instances from ‘Control.Applicative’ + To import instances alone, use: import Control.Applicative() + +XMonad/Actions/DynamicWorkspaces.hs:130:1: warning: [-Wtabs] + Tab character found here, and in 17 further locations. + Please use spaces instead. + +XMonad/Actions/DynamicWorkspaces.hs:135:28: warning: [-Wname-shadowing] + This binding for ‘new’ shadows the existing binding + imported from ‘XMonad.StackSet’ at XMonad/Actions/DynamicWorkspaces.hs:39:1-54 + +XMonad/Util/Loggers/NamedScratchpad.hs:96:22: warning: [-Wtype-defaults] + • Defaulting the following constraints to type ‘Integer’ + (Num a0) + arising from the literal ‘0’ + at XMonad/Util/Loggers/NamedScratchpad.hs:96:22 + (Enum a0) + arising from the arithmetic sequence ‘0 .. ’ + at XMonad/Util/Loggers/NamedScratchpad.hs:96:21-25 + • In the expression: 0 + In the first argument of ‘zip3’, namely ‘[0 .. ]’ + In the first argument of ‘forM’, namely ‘(zip3 [0 .. ] ws ns)’ + +XMonad/Actions/WorkspaceNames.hs:104:5: warning: [-Wname-shadowing] + This binding for ‘lookup’ shadows the existing binding + imported from ‘Prelude’ at XMonad/Actions/WorkspaceNames.hs:20:8-36 + (and originally defined in ‘GHC.List’) +face... + 71% ( 5 / 7) in 'XMonad.Actions.Launcher' + Missing documentation for: + ExtensionActions (./XMonad/Actions/Launcher.hs:59) + LauncherConfig (./XMonad/Actions/Launcher.hs:54) +Checking module XMonad.Actions.KeyRemap... +Creating interface... + 89% ( 8 / 9) in 'XMonad.Actions.KeyRemap' + Missing documentation for: + KeymapTable (./XMonad/Actions/KeyRemap.hs:37) +Checking module XMonad.Actions.GroupNavigation... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Actions.GroupNavigation' +Checking module XMonad.Actions.GridSelect... +Creating interface... +Warning: Couldn't find .haddock for export def + 87% ( 47 / 54) in 'XMonad.Actions.GridSelect' + Missing documentation for: + def + defaultGSConfig (./XMonad/Actions/GridSelect.hs:233) + TwoDPosition (./XMonad/Actions/GridSelect.hs:236) + TwoD (./XMonad/Actions/GridSelect.hs:291) + moveNext (./XMonad/Actions/GridSelect.hs:458) + movePrev (./XMonad/Actions/GridSelect.hs:470) + TwoDState (./XMonad/Actions/GridSelect.hs:240) +Checking module XMonad.Actions.WindowMenu... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Actions.WindowMenu' + Missing documentation for: + windowMenu (./XMonad/Actions/WindowMenu.hs:52) +Checking module XMonad.Layout.DecorationAddons... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Layout.DecorationAddons' +Checking module XMonad.Layout.ButtonDecoration... +Creating interface... + 60% ( 3 / 5) in 'XMonad.Layout.ButtonDecoration' + Missing documentation for: + buttonDeco (./XMonad/Layout/ButtonDecoration.hs:47) + ButtonDecoration (./XMonad/Layout/ButtonDecoration.hs:51) +Checking module XMonad.Layout.ImageButtonDecoration... +Creating interface... + 57% ( 4 / 7) in 'XMonad.Layout.ImageButtonDecoration' + Missing documentation for: + imageButtonDeco (./XMonad/Layout/ImageButtonDecoration.hs:174) + defaultThemeWithImageButtons (./XMonad/Layout/ImageButtonDecoration.hs:166) + ImageButtonDecoration (./XMonad/Layout/ImageButtonDecoration.hs:178) +Checking module XMonad.Layout.WindowSwitcherDecoration... +Creating interface... + 38% ( 3 / 8) in 'XMonad.Layout.WindowSwitcherDecoration' + Missing documentation for: + windowSwitcherDecoration (./XMonad/Layout/WindowSwitcherDecoration.hs:70) + windowSwitcherDecorationWithButtons (./XMonad/Layout/WindowSwitcherDecoration.hs:74) + windowSwitcherDecorationWithImageButtons (./XMonad/Layout/WindowSwitcherDecoration.hs:95) + WindowSwitcherDecoration (./XMonad/Layout/WindowSwitcherDecoration.hs:78) + ImageWindowSwitcherDecoration (./XMonad/Layout/WindowSwitcherDecoration.hs:99) +Checking module XMonad.Actions.FocusNth... +Creating interface... + 71% ( 5 / 7) in 'XMonad.Actions.FocusNth' + Missing documentation for: + focusNth' (./XMonad/Actions/FocusNth.hs:41) + swapNth' (./XMonad/Actions/FocusNth.hs:49) +Checking module XMonad.Actions.WorkspaceCursors... +Creating interface... +Warning: Couldn't find .haddock for export toList + 73% ( 16 / 22) in 'XMonad.Actions.WorkspaceCursors' + Missing documentation for: + focusDepth (./XMonad/Actions/WorkspaceCursors.hs:159) + toList + WorkspaceCursors (./XMonad/Actions/WorkspaceCursors.hs:197) + getFocus (./XMonad/Actions/WorkspaceCursors.hs:141) + focusNth' (./XMonad/Actions/FocusNth.hs:41) + Cursors (./XMonad/Actions/WorkspaceCursors.hs:119) +Checking module XMonad.Actions.FloatKeys... +Creating interface... + 78% ( 7 / 9) in 'XMonad.Actions.FloatKeys' + Missing documentation for: + P (./XMonad/Actions/FloatKeys.hs:71) + G (./XMonad/Actions/FloatKeys.hs:70) +Checking module XMonad.Hooks.Place... +Creating interface... + 94% ( 16 / 17) in 'XMonad.Hooks.Place' + Missing documentation for: + simpleSmart (./XMonad/Hooks/Place.hs:117) +Checking module XMonad.Actions.FlexibleResize... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Actions.FlexibleResize' +Checking module XMonad.Actions.FlexibleManipulate... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Actions.FlexibleManipulate' +Checking module XMonad.Actions.FindEmptyWorkspace... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Actions.FindEmptyWorkspace' +Checking module XMonad.Actions.DynamicWorkspaces... +Creating interface... + 72% ( 18 / 25) in 'XMonad.Actions.DynamicWorkspaces' + Missing documentation for: + withWorkspace (./XMonad/Actions/DynamicWorkspaces.hs:117) + selectWorkspace (./XMonad/Actions/DynamicWorkspaces.hs:153) + renameWorkspace (./XMonad/Actions/DynamicWorkspaces.hs:125) + renameWorkspaceByName (./XMonad/Actions/DynamicWorkspaces.hs:128) + toNthWorkspace (./XMonad/Actions/DynamicWorkspaces.hs:139) + withNthWorkspace (./XMonad/Actions/DynamicWorkspaces.hs:146) + withWorkspaceIndex (./XMonad/Actions/DynamicWorkspaces.hs:105) +Checking module XMonad.Util.NamedScratchpad... +Creating interface... + 92% ( 12 / 13) in 'XMonad.Util.NamedScratchpad' + Missing documentation for: + allNamedScratchpadAction (./XMonad/Util/NamedScratchpad.hs:124) +Checking module XMonad.Util.Loggers.NamedScratchpad... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Util.Loggers.NamedScratchpad' +Checking module XMonad.Util.Scratchpad... +Creating interface... + 100% ( 9 / 9) in 'XMonad.Util.Scratchpad' +Checking module XMonad.Actions.DynamicWorkspaceGroups... +Creating interface... + 85% ( 11 / 13) in 'XMonad.Actions.DynamicWorkspaceGroups' + Missing documentation for: + WSGroupId (./XMonad/Actions/DynamicWorkspaceGroups.hs:64) + WSGPrompt (./XMonad/Actions/DynamicWorkspaceGroups.hs:127) +Checking module XMonad.Actions.DynamicProjects... +Creating interface... + 95% ( 20 / 21) in 'XMonad.Actions.DynamicProjects' + Missing documentation for: + ProjectName (./XMonad/Actions/DynamicProjects.hs:124) +Checking module XMonad.Actions.DwmPromote... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.DwmPromote' +Checking module XMonad.Actions.DeManage... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.DeManage' +Checking module XMonad.Actions.CycleWindows... +Creating interface... + 75% ( 21 / 28) in 'XMonad.Actions.CycleWindows' + Missing documentation for: + cycleRecentWindows (./XMonad/Actions/CycleWindows.hs:112) + rotOpposite (./XMonad/Actions/CycleWindows.hs:173) + rotFocusedDown (./XMonad/Actions/CycleWindows.hs:200) + rotUnfocusedUp (./XMonad/Actions/CycleWindows.hs:215) + rotUnfocusedDown (./XMonad/Actions/CycleWindows.hs:217) + rotUp (./XMonad/Actions/CycleWindows.hs:232) + rotDown (./XMonad/Actions/CycleWindows.hs:234) +Checking module XMonad.Actions.CycleWS... +Creating interface... + 100% ( 33 / 33) in 'XMonad.Actions.CycleWS' +Checking module XMonad.Actions.DynamicWorkspaceOrder... +Creating interface... + 100% ( 10 / 10) in 'XMonad.Actions.DynamicWorkspaceOrder' +Checking module XMonad.Actions.SwapWorkspaces... +Creating interface... + 100% ( 7 / 7) in 'XMonad.Actions.SwapWorkspaces' +Checking module XMonad.Actions.WorkspaceNames... +Creating interface... + 100% ( 18 / 18) in 'XMonad.Actions.WorkspaceNames' +Checking module XMonad.Actions.CycleSelectedLayouts... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.CycleSelectedLayouts' +Checking module XMonad.Actions.CycleRecentWS... +Creating interface... + 100% ( 5 / 5) in 'XMonad.Actions.CycleRecentWS' +Checking module XMonad.Actions.CopyWindow... +Creating interface... + 100% ( 12 / 12) in 'XMonad.Actions.CopyWindow' +Checking module XMonad.Config.Droundy... +Creating interface... + 33% ( 1 / 3) in 'XMonad.Config.Droundy' + Missing documentation for: + config (./XMonad/Config/Droundy.hs:120) + mytab (./XMonad/Config/Droundy.hs:139) +Checking module XMonad.Config.Sjanssen... +Creating interface... + 0% ( 0 / 2) in 'XMonad.Config.Sjanssen' + Missing documentation for: + Module header + sjanssenConfig (./XMonad/Config/Sjanssen.hs:23) +Checking module XMonad.Prompt.Window... +Creating interface... + 92% ( 11 / 12) in 'XMonad.Prompt.Window' + Missing documentation for: + WindowPrompt (./XMonad/Prompt/Window.hs:72) +Checking module XMonad.Actions.ConstrainedResize... +Creating interface... + 100% ( 4 / 4) in 'XMonad.Actions.ConstrainedResize' +Checking module XMonad.Actions.Commands... +Crea +XMonad/Config/Bluetile.hs:64:1: warning: [-Wunused-imports] + The import of ‘Data.Monoid’ is redundant + except perhaps to import instances from ‘Data.Monoid’ + To import instances alone, use: import Data.Monoid() +ting interface... + 100% ( 9 / 9) in 'XMonad.Actions.Commands' +Checking module XMonad.Hooks.ServerMode... +Creating interface... + 100% ( 8 / 8) in 'XMonad.Hooks.ServerMode' +Checking module XMonad.Prompt.XMonad... +Creating interface... + 67% ( 4 / 6) in 'XMonad.Prompt.XMonad' + Missing documentation for: + xmonadPrompt (./XMonad/Prompt/XMonad.hs:46) + XMonad (./XMonad/Prompt/XMonad.hs:41) +Checking module XMonad.Config.Arossato... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Config.Arossato' + Missing documentation for: + arossatoConfig (./XMonad/Config/Arossato.hs:86) +Checking module XMonad.Actions.BluetileCommands... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Actions.BluetileCommands' + Missing documentation for: + bluetileCommands (./XMonad/Actions/BluetileCommands.hs:73) +Checking module XMonad.Config.Bluetile... +Creating interface... + 75% ( 3 / 4) in 'XMonad.Config.Bluetile' + Missing documentation for: + bluetileConfig (./XMonad/Config/Bluetile.hs:200) +Checking module XMonad.Actions.AfterDrag... +Creating interface... + 100% ( 6 / 6) in 'XMonad.Actions.AfterDrag' +Checking module XMonad.Actions.FloatSnap... +Creating interface... + 100% ( 13 / 13) in 'XMonad.Actions.FloatSnap' +Attaching instances... +Building cross-linking environment... +Renaming interfaces... +Warning: XMonad.Util.WorkspaceCompare: could not find link destinations for: + WorkspaceId Ordering WindowSpace X Maybe Int +Warning: XMonad.Util.WindowState: could not find link destinations for: + Window MonadState Query Monad * >>= >> return fail String Functor fmap <$ Applicative pure <*> *> <* MonadIO liftIO IO Maybe Show Read Typeable state X catchX +Warning: XMonad.Util.WindowProperties: could not find link destinations for: + String Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Window X Query Atom Maybe CLong +Warning: XMonad.Util.Ungrab: could not find link destinations for: + X +Warning: XMonad.Util.Types: could not find link destinations for: + Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Bounded minBound maxBound Enum succ pred toEnum fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Ord compare Ordering < <= > >= max min +Warning: XMonad.Util.TreeZipper: could not find link destinations for: + Tree Forest Maybe Int Eq Bool +Warning: XMonad.Util.Timer: could not find link destinations for: + Rational X Event Maybe Int +Warning: XMonad.Util.StringProp: could not find link destinations for: + String MonadIO Display Maybe Char +Warning: XMonad.Util.Stack: could not find link destinations for: + Maybe Stack Int Either Right Left Ord Ordering Bool Monad foldr foldl Eq !! True False +Warning: XMonad.Util.Run: could not find link destinations for: + MonadIO FilePath String Int spawn X Rational Handle IO +Warning: XMonad.Util.XSelection: could not find link destinations for: + MonadIO String X +Warning: XMonad.Util.Replace: could not find link destinations for: + IO restart +Warning: XMonad.Util.RemoteWindows: could not find link destinations for: + Window X Bool String ManageHook +Warning: XMonad.Util.NoTaskbar: could not find link destinations for: + ManageHook Window X +Warning: XMonad.Util.NamedWindows: could not find link destinations for: + Eq == Bool /= Ord compare Ordering < <= > >= max min Show showsPrec Int ShowS show String showList Window X +Warning: XMonad.Util.Invisible: could not find link destinations for: + Monad * >>= >> return fail String Functor fmap <$ Applicative pure <*> *> <* Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Maybe +Warning: XMonad.Util.Font: could not find link destinations for: + FontStruct FontSet XftFont String X Int Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Functor MonadIO Display Rectangle Position Int32 Drawable GC Integral Num fromIntegral +Warning: XMonad.Util.Image: could not find link destinations for: + Int Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Rectangle Bool Position Functor MonadIO Display Drawable GC +Warning: XMonad.Util.XUtils: could not find link destinations for: + Double X Rectangle Maybe EventMask String Bool Window Dimension Functor MonadIO Display Integral Num fromIntegral +Warning: XMonad.Util.ExtensibleState: could not find link destinations for: + ExtensionClass X Eq Bool +Warning: XMonad.Util.PositionStore: could not find link destinations for: + X Window Rectangle Position Maybe Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList ExtensionClass initialValue extensionType StateExtension +Warning: XMonad.Util.SpawnNamedPipe: could not find link destinations for: + String X Maybe Handle +Warning: XMonad.Util.SpawnOnce: could not find link destinations for: + String X +Warning: XMonad.Util.Dzen: could not find link destinations for: + String X Int Rational ScreenId Monad +Warning: XMonad.Util.Dmenu: could not find link destinations for: + String X Map Maybe +Warning: XMonad.Util.DebugWindow: could not find link destinations for: + Window X String +Warning: XMonad.Util.CustomKeys: could not find link destinations for: + XConfig Layout KeyMask KeySym X Map +Warning: XMonad.Util.Cursor: could not find link destinations for: + Glyph X +Warning: XMonad.Prompt: could not find link destinations for: + String X Maybe Default Show showsPrec Int ShowS show showList Rational Read readsPrec ReadS readList readPrec ReadPrec readListPrec Dimension Bool Map KeyMask KeySym StateT IO Char isSpace Stack Eq == /= Display Screen Window Position Drawable GC Ord Functor MonadIO +Warning: XMonad.Prompt.AppendFile: could not find link destinations for: + FilePath X String +Warning: XMonad.Prompt.ConfirmPrompt: could not find link destinations for: + String X +Warning: XMonad.Prompt.DirExec: could not find link destinations for: + String X FilePath +Warning: XMonad.Prompt.Directory: could not find link destinations for: + String X +Warning: XMonad.Prompt.Input: could not find link destinations for: + String X Maybe Monad +Warning: XMonad.Prompt.Email: could not find link destinations for: + String X +Warning: XMonad.Prompt.Pass: could not find link destinations for: + X +Warning: XMonad.Prompt.Shell: could not find link destinations for: + String X FilePath IO Predicate Eq +Warning: XMonad.Prompt.AppLauncher: could not find link destinations for: + X String +Warning: XMonad.Prompt.Man: could not find link destinations for: + X String IO +Warning: XMonad.Prompt.Ssh: could not find link destinations for: + X String +Warning: XMonad.Prompt.Unicode: could not find link destinations for: + X +Warning: XMonad.Prompt.Workspace: could not find link destinations for: + String X +Warning: XMonad.Layout.TwoPane: could not find link destinations for: + Rational LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.ToggleLayouts: could not find link destinations for: + LayoutClass String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Message * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Layout.ThreeColumns: could not find link destinations for: + Int Rational LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.StackTile: could not find link destinations for: + Int Rational LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Square: could not find link destinations for: + LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Spiral: could not find link destinations for: + Rational Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Enum succ pred toEnum fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Layout.Simplest: could not find link destinations for: + LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Roledex: could not find link destinations for: + LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.ResizableTile: could not find link destinations for: + Int Rational Shrink Expand LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Message +Warning: XMonad.Layout.PerWorkspace: could not find link destinations for: + LayoutClass Show * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList +Warning: XMonad.Layout.PerScreen: could not find link destinations for: + LayoutClass Show * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList Dimension +Warning: XMonad.Layout.OneBig: could not find link destinations for: + Float LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.MultiToggle: could not find link destinations for: + Eq Typeable LayoutClass Window * Message Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList find Maybe resolve runLayout Workspace WorkspaceId Rectangle X doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Layout.MultiColumns: could not find link destinations for: + Int Rational LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Eq == Bool /= Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.MouseResizableTile: could not find link destinations for: + Message Int Rational Bool Dimension Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Layout.MosaicAlt: could not find link destinations for: + LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Map Eq == Bool /= Message +Warning: XMonad.Layout.Mosaic: could not find link destinations for: + Rational Message Expand X Shrink LayoutClass * runLayout Workspace WorkspaceId Rectangle Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.LayoutScreens: could not find link destinations for: + LayoutClass Int X Rectangle * runLayout Workspace WorkspaceId Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.LayoutModifier: could not find link destinations for: + LayoutClass Show Read Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String runLayout Hide ReleaseResources description * Window Eq createDecos handleEvent doLayout pureLayout emptyLayout handleMessage pureMessage readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList +Warning: XMonad.Layout.LimitWindows: could not find link destinations for: + Int X * LayoutClass Workspace WorkspaceId Rectangle Maybe SomeMessage Either Stack String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Eq == Bool /= +Warning: XMonad.Layout.Magnifier: could not find link destinations for: + Toggle Rational Message Window * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Master: could not find link destinations for: + LayoutClass Rational FixMaster Int Window * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Maximize: could not find link destinations for: + LayoutClass Window Dimension * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Eq == Bool /= Message +Warning: XMonad.Layout.MessageControl: could not find link destinations for: + LayoutClass Message * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Either +Warning: XMonad.Layout.NoBorders: could not find link destinations for: + LayoutClass Window Dimension Read Show WindowSet Maybe Stack Rectangle readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show String showList union \\ intersect * Workspace WorkspaceId X SomeMessage Either +Warning: XMonad.Layout.MultiToggle.Instances: could not find link destinations for: + Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Window LayoutClass * +Warning: XMonad.Layout.OnHost: could not find link destinations for: + layoutHook LayoutClass Show * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList +Warning: XMonad.Layout.Reflect: could not find link destinations for: + Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Window LayoutClass * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack +Warning: XMonad.Layout.Renamed: could not find link destinations for: + Int String * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack Eq == Bool /= Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Named: could not find link destinations for: + String +Warning: XMonad.Layout.ShowWName: could not find link destinations for: + Default String Rational Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack +Warning: XMonad.Layout.SortedLayout: could not find link destinations for: + SortedLayout String Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Window X +Warning: XMonad.Layout.Spacing: could not find link destinations for: + Int * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Message +Warning: XMonad.Layout.TrackFloating: could not find link destinations for: + Window * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.WindowArranger: could not find link destinations for: + Int Rectangle Message Show Read Eq * LayoutClass Workspace WorkspaceId X Maybe SomeMessage Either Stack String readsPrec ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList Bool +Warning: XMonad.Layout.PositionStoreFloat: could not find link destinations for: + LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.SimplestFloat: could not find link destinations for: + Eq LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.WindowNavigation: could not find link destinations for: + LayoutClass Window X Message Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Typeable * Double Default Workspace WorkspaceId Rectangle Maybe SomeMessage Either Stack +Warning: XMonad.Layout.WorkspaceDir: could not find link destinations for: + LayoutClass String X Window * Workspace WorkspaceId Rectangle Maybe SomeMessage Either Stack Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.LayoutBuilder: could not find link destinations for: + Read Eq LayoutClass Int Maybe Rational Full X Bool Window Message readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Typeable * runLayout Workspace WorkspaceId Rectangle doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Layout.LayoutBuilderP: could not find link destinations for: + Maybe LayoutClass Show Read Eq Typeable * runLayout Workspace WorkspaceId Rectangle X doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList Full Rational Bool Window +Warning: XMonad.Layout.IfMax: could not find link destinations for: + Int LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.HintedTile: could not find link destinations for: + Int Rational LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Eq == Bool /= Ord compare Ordering < <= > >= max min +Warning: XMonad.Layout.HintedGrid: could not find link destinations for: + Bool Double LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Hidden: could not find link destinations for: + Window Eq == Bool /= Message LayoutClass HiddenWindows X +Warning: XMonad.Layout.Groups: could not find link destinations for: + Window SomeMessage Int Show showsPrec ShowS show String showList Message Bool True False LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage pureMessage description Read readsPrec ReadS readList readPrec ReadPrec readListPrec Eq == /= gen +Warning: XMonad.Layout.GridVariants: could not find link destinations for: + Int Rational Message LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Eq == Bool /= +Warning: XMonad.Layout.Grid: could not find link destinations for: + Double LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.IM: could not find link destinations for: + String Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Window X Rational LayoutClass * runLayout Workspace WorkspaceId Rectangle Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description Either +Warning: XMonad.Layout.Gaps: could not find link destinations for: + Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack Message +Warning: XMonad.Layout.FixedColumn: could not find link destinations for: + Int Shrink Expand IncMasterN LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Dwindle: could not find link destinations for: + Rational D Expand Shrink LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Bounded minBound maxBound Enum succ pred toEnum fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min +Warning: XMonad.Layout.Drawer: could not find link destinations for: + Tall Rational Mirror Window LayoutClass Read * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.DraggingVisualizer: could not find link destinations for: + LayoutClass Window Rectangle Eq == Bool /= Message * Workspace WorkspaceId X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.DragPane: could not find link destinations for: + Double LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Dishes: could not find link destinations for: + Int Rational LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Cross: could not find link destinations for: + Rational Shrink Expand LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.ComboP: could not find link destinations for: + LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Message Bool +Warning: XMonad.Layout.Combo: could not find link destinations for: + Read Eq LayoutClass Show Typeable * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList +Warning: XMonad.Layout.LayoutCombinators: could not find link destinations for: + Read Eq LayoutClass Tall Mirror String readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Message * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Prompt.Layout: could not find link destinations for: + X +Warning: XMonad.Layout.Column: could not find link destinations for: + Float LayoutClass * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Circle: could not find link destinations for: + LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.CenteredMaster: could not find link destinations for: + LayoutClass Window * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.BoringWindows: could not find link destinations for: + LayoutClass Eq X Message String Window Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList * Workspace WorkspaceId Rectangle Maybe SomeMessage Either Stack +Warning: XMonad.Layout.Minimize: could not find link destinations for: + LayoutClass Window X Eq == Bool /= Message * Workspace WorkspaceId Rectangle Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.BinarySpacePartition: could not find link destinations for: + BinarySpacePartition Message Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList +Warning: XMonad.Layout.AvoidFloats: could not find link destinations for: + AvoidFloats Int Bool Message Typeable * +Warning: XMonad.Layout.AutoMaster: could not find link destinations for: + LayoutClass Int Float Eq * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.Accordion: could not find link destinations for: + LayoutClass Window * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Hooks.XPropManage: could not find link destinations for: + windows ManageHook Atom String Bool Window X WindowSet +Warning: XMonad.Hooks.WorkspaceHistory: could not find link destinations for: + logHook X WorkspaceId WorkspaceHistory +Warning: XMonad.Hooks.WorkspaceByPos: could not find link destinations for: + ManageHook +Warning: XMonad.Hooks.WallpaperSetter: could not find link destinations for: + X FilePath Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Default Eq == Bool /= WorkspaceId Monoid mempty mappend mconcat +Warning: XMonad.Hooks.UrgencyHook: could not find link destinations for: + LayoutClass Window XConfig Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList X WorkspaceId Rational +Warning: XMonad.Layout.Decoration: could not find link destinations for: + String Dimension Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Default Window * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack createDecos handleEvent Message Eq Event CInt Position Just Nothing Integral Num fromIntegral PropertyEvent ExposeEvent +Warning: XMonad.Layout.BorderResize: could not find link destinations for: + Map Window * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.DwmStyle: could not find link destinations for: + Eq String Dimension Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Default * Rectangle Event X Window CInt Position Stack Maybe +Warning: XMonad.Layout.LayoutHints: could not find link destinations for: + LayoutClass Double Window * Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Event All +Warning: XMonad.Layout.ResizeScreen: could not find link destinations for: + Int Rectangle * LayoutClass Workspace WorkspaceId X Maybe SomeMessage Either Stack String Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.SimpleDecoration: could not find link destinations for: + Eq String Dimension Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Default * Rectangle Event X Window CInt Position Stack Maybe +Warning: XMonad.Layout.NoFrillsDecoration: could not find link destinations for: + Eq * String Rectangle Event X Window Int Bool CInt Position Dimension Stack Maybe Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.TabBarDecoration: could not find link destinations for: + Eq Default * String Rectangle Event X Window Int Bool CInt Position Dimension Stack Maybe Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Rational +Warning: XMonad.Layout.Tabbed: could not find link destinations for: + Window Eq LayoutClass String Dimension Bool Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Default * Rectangle Event X CInt Position Stack Maybe == /= Bounded minBound maxBound Enum succ pred toEnum fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Ord compare Ordering < <= > >= max min +Warning: XMonad.Layout.SubLayouts: could not find link destinations for: + Int NextLayout Tall Eq LayoutClass Stack Window X Message SomeMessage Typeable * XConfig Map KeyMask KeySym Read Show Workspace WorkspaceId Rectangle Maybe Either String readsPrec ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList focusWindow +Warning: XMonad.Layout.ZoomRow: could not find link destinations for: + layoutHook LayoutClass Show Read * runLayout Workspace WorkspaceId Rectangle X Maybe doLayout Stack pureLayout emptyLayout handleMessage SomeMessage pureMessage description String Eq == Bool /= readsPrec Int ReadS readList readPrec ReadPrec readListPrec showsPrec ShowS show showList Window Rational Message +Warning: XMonad.Util.Themes: could not find link destinations for: + String +Warning: XMonad.Prompt.Theme: could not find link destinations for: + X String +Warning: XMonad.Hooks.ToggleHook: could not find link destinations for: + ManageHook String Bool X logHook id Maybe +Warning: XMonad.Hooks.SetWMName: could not find link destinations for: + String X +Warning: XMonad.Hooks.Script: could not find link destinations for: + MonadIO String +Warning: XMonad.Hooks.ScreenCorners: could not find link destinations for: + Eq == Bool /= Ord compare Ordering < <= > >= max min Show showsPrec Int ShowS show String showList X Event All ScreenCornerLayout +Warning: XMonad.Hooks.RestoreMinimized: could not find link destinations for: + Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Event X All +Warning: XMonad.Hooks.Minimize: could not find link destinations for: + Event X All +Warning: XMonad.Hooks.ManageHelpers: could not find link destinations for: + Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList ManageHook composeAll Just Query Nothing WorkspaceId Maybe ProcessID Window Endo WindowSet RationalRect Rational +Warning: XMonad.Layout.Fullscreen: could not find link destinations for: + LayoutClass Window XConfig RationalRect Event X All ManageHook Query Bool Message * Workspace WorkspaceId Rectangle Maybe SomeMessage Either Stack String Read Ord readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Hooks.ManageDocks: could not find link destinations for: + D XConfig ManageHook Query Bool * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList Event All Message Set <= +Warning: XMonad.Hooks.PositionStoreHooks: could not find link destinations for: + ManageHook Nothing Maybe Event X All +Warning: XMonad.Hooks.InsertPosition: could not find link destinations for: + . ManageHook insertDown +Warning: XMonad.Hooks.ICCCMFocus: could not find link destinations for: + X Atom Window +Warning: XMonad.Hooks.FloatNext: could not find link destinations for: + ManageHook Bool X logHook id String Maybe +Warning: XMonad.Hooks.FadeInactive: could not find link destinations for: + Window Rational X Query Bool +Warning: XMonad.Hooks.FadeWindows: could not find link destinations for: + ManageHook logHook handleEventHook X Query Monoid mempty mappend mconcat Rational Event All Endo Bool +Warning: XMonad.Layout.Monitor: could not find link destinations for: + True Rectangle Bool String Rational Window * LayoutClass Workspace WorkspaceId X Maybe SomeMessage Either Stack Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList False Eq == /= Message ManageHook +Warning: XMonad.Hooks.EwmhDesktops: could not find link destinations for: + XConfig X WindowSpace Event All +Warning: XMonad.Hooks.DynamicProperty: could not find link destinations for: + String ManageHook Event X All +Warning: XMonad.Hooks.DynamicLog: could not find link destinations for: + LayoutClass Window XConfig IO String Layout KeyMask KeySym X WorkspaceId WindowSpace Maybe Default Int WindowSet +Warning: XMonad.Layout.IndependentScreens: could not find link destinations for: + WorkspaceId XConfig ScreenId WindowSet MonadIO Integral WindowSpace +Warning: XMonad.Util.Loggers: could not find link destinations for: + X Maybe String FilePath Bool Int Functor +Warning: XMonad.Hooks.DynamicHooks: could not find link destinations for: + ManageHook manageHook X Query Bool +Warning: XMonad.Hooks.DynamicBars: could not find link destinations for: + startupHook handleEventHook ScreenId logHook Handle IO X Event All String +Warning: XMonad.Hooks.DebugStack: could not find link destinations for: + X String logHook Event All handleEventHook +Warning: XMonad.Hooks.DebugKeyEvents: could not find link destinations for: + Event X All +Warning: XMonad.Hooks.DebugEvents: could not find link destinations for: + Event X All handleEventHook CInt ReaderT +Warning: XMonad.Hooks.CurrentWorkspaceOnTop: could not find link destinations for: + X +Warning: XMonad.Doc.Developing: could not find link destinations for: + IO String filter error undefined +Warning: XMonad.Config.Desktop: could not find link destinations for: + XConfig Choose Tall Mirror Full LayoutClass mconcat ManageHook <+> +Warning: XMonad.Config.Gnome: could not find link destinations for: + XConfig Choose Tall Mirror Full X MonadIO LayoutClass +Warning: XMonad.Config.Kde: could not find link destinations for: + XConfig Choose Tall Mirror Full LayoutClass +Warning: XMonad.Config.Mate: could not find link destinations for: + XConfig Choose Tall Mirror Full X MonadIO LayoutClass +Warning: XMonad.Config.Xfce: could not find link destinations for: + XConfig Choose Tall Mirror Full LayoutClass +Warning: XMonad.Config.Bepo: could not find link destinations for: + XConfig Choose Tall Mirror Full Map KeyMask KeySym X +Warning: XMonad.Config.Azerty: could not find link destinations for: + XConfig Choose Tall Mirror Full Map KeyMask KeySym X +Warning: XMonad.Actions.WithAll: could not find link destinations for: + X Window WindowSet +Warning: XMonad.Layout.Stoppable: could not find link destinations for: + String Rational Maybe Window * LayoutClass Workspace WorkspaceId Rectangle X SomeMessage Either Stack Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Actions.WindowNavigation: could not find link destinations for: + KeySym XConfig IO KeyMask IORef X Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Map WorkspaceId Point +Warning: XMonad.Actions.WindowGo: could not find link destinations for: + Query Bool X String title resource className Window WindowSet ManageHook +Warning: XMonad.Prompt.RunOrRaise: could not find link destinations for: + X String +Warning: XMonad.Actions.WindowBringer: could not find link destinations for: + String WindowSpace Window X Default Map WindowSet +Warning: XMonad.Actions.Warp: could not find link destinations for: + X ScreenId Rational +Warning: XMonad.Actions.UpdatePointer: could not find link destinations for: + Rational X +Warning: XMonad.Layout.MagicFocus: could not find link destinations for: + Event X All Rational Bool WorkspaceId Window * LayoutClass Workspace Rectangle Maybe SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Actions.UpdateFocus: could not find link destinations for: + Event X All +Warning: XMonad.Actions.TreeSelect: could not find link destinations for: + Node logHook WorkspaceId Forest String WindowSet X greedyView shift Word64 Bool Int Map KeyMask KeySym TreeSelect Maybe Default Tree TSState XRenderColor +Warning: XMonad.Actions.TopicSpace: could not find link destinations for: + WorkspaceId FilePath Map X Int Default String Bool IO Monad +Warning: XMonad.Actions.TagWindows: could not find link destinations for: + unwords String Window X Bool WindowSet Ord Eq StackSet +Warning: XMonad.Actions.Submap: could not find link destinations for: + Map KeyMask KeySym X +Warning: XMonad.Util.NamedActions: could not find link destinations for: + spawn Message Show sendMessage String KeyMask KeySym XConfig Layout Char X showName getAction IO Resize showsPrec Int ShowS show showList IncMasterN +Warning: XMonad.Util.EZConfig: could not find link destinations for: + startupHook XConfig KeyMask KeySym X String ButtonMask Button Window Map ReadP +Warning: XMonad.Config.Prime: could not find link destinations for: + Default Read Window LayoutClass IO XConfig True False mod1Mask mod4Mask Settable String KeyMask Dimension Bool * Summable ManageHook Event X All EventMask Keys MouseBindings WorkspaceConfig repeat Int ScreenConfig ScreenId Eq StackSet Choose >>= +Warning: XMonad.Hooks.ManageDebug: could not find link destinations for: + XConfig ManageHook String doShift X const startupHook +Warning: XMonad.Util.Paste: could not find link destinations for: + X String KeyMask Char stringToKeysym KeySym Window +Warning: XMonad.Actions.SpawnOn: could not find link destinations for: + ExtensionClass initialValue extensionType StateExtension ManageHook ProcessID X String spawn WorkspaceId +Warning: XMonad.Config.Dmwit: could not find link destinations for: + String IO Floating Char Read Integer Double X ScreenId WorkspaceId WindowSet Eq Ord StackSet Query Endo KeyMask RationalRect Layout Window ScreenDetail Show Int Word64 Screen Rectangle Position Dimension Maybe Stack Map Workspace Screen showsPrec ShowS show showList XConfig Choose Full KeySym MonadIO +Warning: XMonad.Actions.SinkAll: could not find link destinations for: + X +Warning: XMonad.Actions.SimpleDate: could not find link destinations for: + X +Warning: XMonad.Actions.ShowText: could not find link destinations for: + Default Event X All Rational String +Warning: XMonad.Actions.Search: could not find link destinations for: + X String Eq Bool FilePath +Warning: XMonad.Actions.RotSlaves: could not find link destinations for: + Stack X +Warning: XMonad.Actions.RandomBackground: could not find link destinations for: + MonadIO String X terminal Int Double +Warning: XMonad.Actions.Promote: could not find link destinations for: + X +Warning: XMonad.Actions.Plane: could not find link destinations for: + Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= KeyMask Map KeySym X xK_Left xK_Up xK_Right xK_Down shiftMask +Warning: XMonad.Actions.PhysicalScreens: could not find link destinations for: + Int Enum succ pred toEnum fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Integral quot rem div mod quotRem divMod toInteger Integer Num + - * negate abs signum fromInteger Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Real toRational Rational Show showsPrec ShowS show String showList X Maybe ScreenId WorkspaceId WindowSet +Warning: XMonad.Actions.PerWorkspaceKeys: could not find link destinations for: + String X +Warning: XMonad.Actions.OnScreen: could not find link destinations for: + WindowSet ScreenId X WorkspaceId +Warning: XMonad.Actions.Workscreen: could not find link destinations for: + X Int WorkspaceId Show showsPrec ShowS show String showList +Warning: XMonad.Actions.NoBorders: could not find link destinations for: + Window X +Warning: XMonad.Actions.Navigation2D: could not find link destinations for: + False True KeySym ButtonMask Bool X XConfig String Screen Window Maybe Rectangle Default ExtensionClass initialValue extensionType StateExtension Eq == /= Ord compare Ordering < <= > >= max min Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Actions.MouseResize: could not find link destinations for: + Rectangle Maybe Window * LayoutClass Workspace WorkspaceId X SomeMessage Either Stack String Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.SimpleFloat: could not find link destinations for: + Eq Bool * String Rectangle Event X Window Int CInt Position Dimension Stack Maybe Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList LayoutClass runLayout Workspace WorkspaceId doLayout pureLayout emptyLayout handleMessage SomeMessage pureMessage description +Warning: XMonad.Layout.DecorationMadness: could not find link destinations for: + Window Tall Mirror Show Eq Default +Warning: XMonad.Actions.MouseGestures: could not find link destinations for: + Map Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList X Window MonadIO >>= +Warning: XMonad.Actions.MessageFeedback: could not find link destinations for: + Message X Bool SomeMessage +Warning: XMonad.Layout.Groups.Helpers: could not find link destinations for: + Message X Bool True False id not reverse +Warning: XMonad.Layout.Groups.Examples: could not find link destinations for: + Mirror Window X Tall Full Int Rational Default ~ * Eq Bool Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList +Warning: XMonad.Layout.Groups.Wmii: could not find link destinations for: + ChangeLayout Tall Full Window X Default +Warning: XMonad.Actions.LinkWorkspaces: could not find link destinations for: + WorkspaceId X ScreenId Char +Warning: XMonad.Actions.Launcher: could not find link destinations for: + xK_grave Map String X +Warning: XMonad.Actions.KeyRemap: could not find link destinations for: + X KeyMask KeySym Show showsPrec Int ShowS show String showList ExtensionClass initialValue extensionType StateExtension +Warning: XMonad.Actions.GroupNavigation: could not find link destinations for: + Query Bool X Eq +Warning: XMonad.Actions.GridSelect: could not find link destinations for: + Integer Bool X String Maybe Double Default Window WorkspaceId WindowSet view greedyView focusedBorderColor normalBorderColor Word8 Monad * >>= >> return fail Functor fmap <$ Applicative pure <*> *> <* MonadState state KeySym KeyMask Map +Warning: XMonad.Actions.WindowMenu: could not find link destinations for: + X +Warning: XMonad.Layout.DecorationAddons: could not find link destinations for: + Window Int X Bool +Warning: XMonad.Layout.ButtonDecoration: could not find link destinations for: + Eq * String Rectangle Event X Window Int Bool CInt Position Dimension Stack Maybe Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Layout.ImageButtonDecoration: could not find link destinations for: + Eq Window Int X Bool * String Rectangle Event CInt Position Dimension Stack Maybe Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrMetadata collection has finished +callCollector finished +Finished updating system metadata +Now loading metadata ... +now loading metadata for package Cabal-1.24.2.0 +now loading metadata for package X11-1.8 +now loading metadata for package X11-xft-0.3.1 +now loading metadata for package array-0.5.1.1 +now loading metadata for package base-4.9.1.0 +now loading metadata for package binary-0.8.3.0 +now loading metadata for package bytestring-0.10.8.1 +now loading metadata for package containers-0.5.7.1 +now loading metadata for package data-default-0.7.1.1 +now loading metadata for package data-default-class-0.1.2.0 +now loading metadata for package data-default-instances-containers-0.0.1 +now loading metadata for package data-default-instances-dlist-0.0.1 +now loading metadata for package data-default-instances-old-locale-0.0.1 +now loading metadata for package deepseq-1.4.2.0 +now loading metadata for package directory-1.3.0.0 +now loading metadata for package dlist-0.8.0.3 +now loading metadata for package extensible-exceptions-0.1.1.4 +now loading metadata for package filepath-1.4.1.1 +now loading metadata for package ghc-8.0.2 +now loading metadata for package ghc-boot-8.0.2 +now loading metadata for package ghc-boot-th-8.0.2 +now loading metadata for package ghc-prim-0.5.0.0 +now loading metadata for package ghci-8.0.2 +now loading metadata for package haskeline-0.7.3.0 +now loading metadata for package hoopl-3.10.2.1 +now loading metadata for package hpc-0.6.0.3 +now loading metadata for package integer-gmp-1.0.0.1 +now loading metadata for package mtl-2.2.1 +now loading metadata for package old-locale-1.0.0.7 +now loading metadata for package old-time-1.1.0.3 +now loading metadata for package pretty-1.1.3.3 +now loading metadata for package process-1.4.3.0 +now loading metadata for package random-1.1 +now loading metadata for package rts-1.0 +now loading metadata for package setlocale-1.0.0.5 +now loading metadata for package template-haskell-2.11.1.0 +now loading metadata for package terminfo-0.4.0.2 +now loading metadata for package time-1.6.0.1 +now loading metadata for package transformers-0.5.2.0 +now loading metadata for package unix-2.7.2.1 +now loading metadata for package utf8-string-1.0.1.1 +now loading metadata for package xhtml-3000.2.1 +now loading metadata for package xmonad-0.13 +now loading metadata for package xmonad-contrib-0.13 +Finished loading metadata +Now updating workspace metadata ... +Finished updating workspace metadata +No active package +No package description +No active package +No package description +update workspace info called +Now updating workspace metadata ... +Finished updating workspace metadata +update workspace info called +setChildren [0,0] +Now updating workspace metadata ... +updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "test-leksah"}, pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}} +updatePackageInfo modToUpdate [] +callCollectorWorkspace +callCollectorWorkspace: Nothing to do +Finished updating workspace metadata +update workspace info called +setChildren [0,0] +setChildren [0,0,0] +setChildren [0,0] +setChildren [0,0] +setChildren [0,0,2] +setChildren [0,0,2] +setChildren [0,0,2] +setChildren [0,0] +Now updating workspace metadata ... +updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "test-leksah"}, pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}} +updatePackageInfo modToUpdate [] +callCollectorWorkspace +callCollectorWorkspace: Nothing to do +Finished updating workspace metadata +***lost connection +***lost last connection - exiting +ec ShowS show showList +Warning: XMonad.Layout.WindowSwitcherDecoration: could not find link destinations for: + Eq * String Rectangle Event X Window Int Bool CInt Position Dimension Stack Maybe Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList +Warning: XMonad.Actions.FocusNth: could not find link destinations for: + Int X Stack +Warning: XMonad.Actions.WorkspaceCursors: could not find link destinations for: + Int String Foldable * LayoutClass Workspace WorkspaceId Rectangle X Maybe SomeMessage Either Stack Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show showList focusUp' focusDown' Functor fmap <$ fold Monoid foldMap foldr foldr' foldl foldl' foldr1 foldl1 null Bool length elem Eq maximum Ord minimum sum Num product == /= +Warning: XMonad.Actions.FloatKeys: could not find link destinations for: + D Window X Position Rational +Warning: XMonad.Hooks.Place: could not find link destinations for: + ManageHook X manageHook doFloat doShift <+> Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Rational Dimension Rectangle Position +Warning: XMonad.Actions.FlexibleResize: could not find link destinations for: + Window X Rational +Warning: XMonad.Actions.FlexibleManipulate: could not find link destinations for: + Double Window X +Warning: XMonad.Actions.FindEmptyWorkspace: could not find link destinations for: + X +Warning: XMonad.Actions.DynamicWorkspaces: could not find link destinations for: + windows shift String X WindowSpace Int WindowSet +Warning: XMonad.Util.NamedScratchpad: could not find link destinations for: + String Query Bool ManageHook RationalRect X WindowSpace +Warning: XMonad.Util.Loggers.NamedScratchpad: could not find link destinations for: + startupHook handleEventHook X logHook Event All Char String +Warning: XMonad.Util.Scratchpad: could not find link destinations for: + XConfig X String ManageHook RationalRect WindowSpace +Warning: XMonad.Actions.DynamicWorkspaceGroups: could not find link destinations for: + String ScreenId WorkspaceId X +Warning: XMonad.Actions.DynamicProjects: could not find link destinations for: + FilePath Maybe X String XConfig +Warning: XMonad.Actions.DwmPromote: could not find link destinations for: + X +Warning: XMonad.Actions.DeManage: could not find link destinations for: + Window X +Warning: XMonad.Actions.CycleWindows: could not find link destinations for: + KeySym X Stack Window Eq Show Read +Warning: XMonad.Actions.CycleWS: could not find link destinations for: + logHook X WorkspaceId greedyView view Eq == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Char WindowSpace WindowSet Workspace ScreenId +Warning: XMonad.Actions.DynamicWorkspaceOrder: could not find link destinations for: + X String WindowSet Int +Warning: XMonad.Actions.SwapWorkspaces: could not find link destinations for: + Eq StackSet X == Bool /= Read readsPrec Int ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList +Warning: XMonad.Actions.WorkspaceNames: could not find link destinations for: + X WorkspaceId Maybe String +Warning: XMonad.Actions.CycleSelectedLayouts: could not find link destinations for: + String X +Warning: XMonad.Actions.CycleRecentWS: could not find link destinations for: + KeySym X WindowSet +Warning: XMonad.Actions.CopyWindow: could not find link destinations for: + Eq StackSet String Query Bool X WorkspaceId +Warning: XMonad.Config.Droundy: could not find link destinations for: + XConfig Full Window String +Warning: XMonad.Config.Sjanssen: could not find link destinations for: + XConfig Choose Full +Warning: XMonad.Prompt.Window: could not find link destinations for: + String X Map Window +Warning: XMonad.Actions.ConstrainedResize: could not find link destinations for: + Window Bool X +Warning: XMonad.Actions.Commands: could not find link destinations for: + String X Map +Warning: XMonad.Hooks.ServerMode: could not find link destinations for: + Event X All String +Warning: XMonad.Prompt.XMonad: could not find link destinations for: + X String +Warning: XMonad.Config.Arossato: could not find link destinations for: + MonadIO XConfig Tall Full Mirror +Warning: XMonad.Actions.BluetileCommands: could not find link destinations for: + X String +Warning: XMonad.Config.Bluetile: could not find link destinations for: + XConfig Full +Warning: XMonad.Actions.AfterDrag: could not find link destinations for: + X Int +Warning: XMonad.Actions.FloatSnap: could not find link destinations for: + Bounded minBound maxBound Enum succ pred toEnum Int fromEnum enumFrom enumFromThen enumFromTo enumFromThenTo Eq == Bool /= Ord compare Ordering < <= > >= max min Read readsPrec ReadS readList readPrec ReadPrec readListPrec Show showsPrec ShowS show String showList Maybe Window X Rational +256 diff --git a/scr/leksah2.png b/scr/leksah2.png new file mode 100644 index 0000000000000000000000000000000000000000..47443d7509963e0a7b3f914818f10c39f0dfc1a5 GIT binary patch literal 21562 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

)8@cJWCq=Tdu1!WrM(67sw(7 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 literal 0 HcmV?d00001 diff --git a/scr/leksah3.png b/scr/leksah3.png new file mode 100644 index 0000000000000000000000000000000000000000..5d75965ea457b4c2c545506fd6b33b298ea26e4f GIT binary patch literal 158260 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ы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 WG*XRhhN4VTC~DNMU3Y9wJDx zjDcbDlyj=31^(*A*3OAj_|88cNlF{O&qnr|?(y-3DYs?sKaqT{gyuK+vpwfEP_Eqt zbx1hDB1$Iv{y2FRC0*yiNBC2&a|V&>^^isizh9>{_ z$oc;sn7_@3mr3CfW$5CtMY;Fzx&KpMA0QTK_wf618?x{@Q}D%$96Htf@dE^)sD)d8 zErX%r2{tLDPU2<&l4Oo5LjKM0b-WA|LZLDBl$x}+Hw|}=p-2yV~wF-&39Yi*3^=&Ht`9WdD zXj*UekeoaA)0c0f<{5J0K)vbiu}>?s(xZQPF=C}!C7c<~9|)%dxE9#UszO8e)}V0x z1a?C&-|uO^#d&6CX6F!48u|Apq?UzdE0B+V8(G)Y^@XRfN*dAEB1mjm`0ca8b2$mA zM7Fm){eBxe2wwLEH{}7avSJzH32^=}DAh>ealzC(iouPheT?9jlSt<6ZtxNX^+SOW z!Bk$WkJM>9i=g?nZMdd>udS6QUnK=#1o3(~vo$8#rlzAH1k3GaTFY^;fjfra3TWC0 z{$i&re|BN#k}x)CK16;GD9P^5K0qlx5@KZ?x=(=&c>@sse)W1#x%bs3Y1EoC3CDp; zAXVYZ_gVQo6@00zHu_Cgwz5>U+faKDtRc27Xy75>vzcS`F10ki@@r>a9!PJ`c=oo` zAzUm=2}~ewv6h!DIYUkI?)1usAhzYuY3VtxG1LC{)Wl7#!$6;9HH&D_LKFqIw1?lD>;So>h6-X)c zrZR;XpB@kBdY?Ces4d$|cbE%QjSqy{|IDR4;#l9jbXTHO)9!H@!|P0S2?q%{pdqO* zwtvz=nSFBHQ70prVG#u+LM`u2*UFnolV4rc2w%8tjNLtR^IS#`06BDOc_XI9@V_}t zj%F+^BX+K~zjv90f_not1S_7cnW*eOsKV8*w&(_e^V_o|K7MMweJKDzwF*;l_K!xl zfMRoo@No}fkF~rk;@U|G3M1-fzH~VLarOCe-l0s-1PF7{%y&E}uuy*1B19{+JyTCm z>Z)HkmAC%i9y^hI6Mz268?YM&lsyBXMLovm&O9Lsd_}wzB3c?9CvyRTJ9gHSRS&?dqw^UA4gMR7;hl(hD zg-_8*+IzWDn)u!;Juy)AloZXYi{s$)vtI-AnIIa1!dQHD`}*pFoZD;n;C{5ubS>t+ zgs7tXl~NoYhdGN>GJQQBJST^fP&g3d9|BQt&$gx8O>y9ReMWjFx`@zb=4kLxj8dfh z*uA`8P+%<-ROv(QZ)|D;j`({QJ56lna~GuuCNPg1m8;r(&!y}&8Xl2b#)qw4fk>1u zayc*XM6W&Fi$%kEj-R#wWRY`<&2|2

>q*YR!09o^z*JT}`dZO8!?7|Dz|aeerCw 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 CYw+X% literal 0 HcmV?d00001 diff --git a/scr/leksah3.txt b/scr/leksah3.txt new file mode 100644 index 0000000..3d39fdc --- /dev/null +++ b/scr/leksah3.txt @@ -0,0 +1,85 @@ +Using default Yi configuration +Linked with -threaded +Reading keymap from /home/lijero/build/leksah/.stack-work/install/x86_64-linux-nopie/lts-9.9/8.0.2/share/x86_64-linux-ghc-8.0.2/leksah-0.16.3.1/data/keymap.lkshk +Now updating system metadata ... +callCollector +***server start +Bind 127.0.0.1:11111 +Metadata collector has nothing to do +Metadata collection has finished +callCollector finished +Finished updating system metadata +Now loading metadata ... +now loading metadata for package Cabal-1.24.2.0 +now loading metadata for package X11-1.8 +now loading metadata for package X11-xft-0.3.1 +now loading metadata for package array-0.5.1.1 +now loading metadata for package base-4.9.1.0 +now loading metadata for package binary-0.8.3.0 +now loading metadata for package bytestring-0.10.8.1 +now loading metadata for package containers-0.5.7.1 +now loading metadata for package data-default-0.7.1.1 +now loading metadata for package data-default-class-0.1.2.0 +now loading metadata for package data-default-instances-containers-0.0.1 +now loading metadata for package data-default-instances-dlist-0.0.1 +now loading metadata for package data-default-instances-old-locale-0.0.1 +now loading metadata for package deepseq-1.4.2.0 +now loading metadata for package directory-1.3.0.0 +now loading metadata for package dlist-0.8.0.3 +now loading metadata for package extensible-exceptions-0.1.1.4 +now loading metadata for package filepath-1.4.1.1 +now loading metadata for package ghc-8.0.2 +now loading metadata for package ghc-boot-8.0.2 +now loading metadata for package ghc-boot-th-8.0.2 +now loading metadata for package ghc-prim-0.5.0.0 +now loading metadata for package ghci-8.0.2 +now loading metadata for package haskeline-0.7.3.0 +now loading metadata for package hoopl-3.10.2.1 +now loading metadata for package hpc-0.6.0.3 +now loading metadata for package integer-gmp-1.0.0.1 +now loading metadata for package mtl-2.2.1 +now loading metadata for package old-locale-1.0.0.7 +now loading metadata for package old-time-1.1.0.3 +now loading metadata for package pretty-1.1.3.3 +now loading metadata for package process-1.4.3.0 +now loading metadata for package random-1.1 +now loading metadata for package rts-1.0 +now loading metadata for package setlocale-1.0.0.5 +now loading metadata for package template-haskell-2.11.1.0 +now loading metadata for package terminfo-0.4.0.2 +now loading metadata for package time-1.6.0.1 +now loading metadata for package transformers-0.5.2.0 +now loading metadata for package unix-2.7.2.1 +now loading metadata for package utf8-string-1.0.1.1 +now loading metadata for package xhtml-3000.2.1 +now loading metadata for package xmonad-0.13 +now loading metadata for package xmonad-contrib-0.13 +Finished loading metadata +updateWorkspaceInfo' no workspace +Now updating workspace metadata ... +update workspace info called +Could not retrieve vcs-conf for active package. No vcs-conf set up. +setChildren [0,0] +Now updating workspace metadata ... +updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "test-leksah"}, pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}} +updatePackageInfo modToUpdate [] +callCollectorWorkspace +callCollectorWorkspace: Nothing to do +Finished updating workspace metadata +update workspace info called +setChildren [0,0] +setChildren [0,0,0] +setChildren [0,0] +setChildren [0,0] +setChildren [0,0,2] +setChildren [0,0,2] +setChildren [0,0,2] +setChildren [0,0] +Now updating workspace metadata ... +updatePackageInfo False PackageIdentifier {pkgName = PackageName {unPackageName = "test-leksah"}, pkgVersion = Version {versionBranch = [0,0,1], versionTags = []}} +updatePackageInfo modToUpdate [] +callCollectorWorkspace +callCollectorWorkspace: Nothing to do +Finished updating workspace metadata +***lost connection +***lost last connection - exiting diff --git a/scr/leksaha0.png b/scr/leksaha0.png new file mode 100644 index 0000000000000000000000000000000000000000..b5b2a2c914666381713a8161a840ee845f426b0b GIT binary patch literal 10220 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 literal 0 HcmV?d00001 diff --git a/scr/leksaha1.png b/scr/leksaha1.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd4689b810e408bcb97e5f993bbaca6411d6b95 GIT binary patch literal 32452 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 ZV@&izR}}OmfqUqoS1)A63q;?3{68CA8}a}E literal 0 HcmV?d00001 diff --git a/sitemap.xml b/sitemap.xml index 325a164..42772ff 100755 --- a/sitemap.xml +++ b/sitemap.xml @@ -6,4 +6,10 @@ monthly 0.8 + + https://lijero.co/articles/beyond-operating-systems + 2017-10-07 + daily + 0.7 + diff --git a/switteprim.txt b/switteprim.txt new file mode 100644 index 0000000..1f99f9c --- /dev/null +++ b/switteprim.txt @@ -0,0 +1,296 @@ +INTRODUCTION +================= + +This system is derived from linear type theory, such that for a value x with type A: + +(x : A) means that x must be used exactly once. +(x : ?A) means that x may be used at most once, or forgotten. +(x : !A) means that x may be used multiple times, but at least once. +(x : ?!A) means that x may be used zero or more times. + +? is read "why not", and ! is read "of course". + +Additive means "there are two possibilities, but you only get one". In other words, + in each branch of an additive relationship, all of the non-? variables in the + context must be disposed of. +Multiplicative means "you get both of these at once". In other words, all of the + non-? variables must be disposed of as a whole. +Conjunction means "both values exist at once". +Disjunction means "only one of these values exist at once". + +Additive conjunction (a & b) means "you can use either a or b, it's up to you which". +Additive disjunction (a + b) means "I am going to give you an a or a b, and you must + be prepared to deal with either, but not both at the same time." +Multiplicative conjunction (a * b) means "I am going to give you an a and a b, and + you have to use both". +Multiplicative disjunction (a | b) means "you must be prepared to recieve both an a + and a b, but ultimately only one will be used". If that's a bit confusing, that's alright. + + +AXIOM +===== + +a | -a + +where -a represents the dual of a, and | represents multiplicative disjunction. +This is the axiom of the excluded middle, meaning to "a is true or not true". +Its implementation is explained in "multiplicative disjunction". There are no +further axioms. + + +Duals: + +While they're a general construct, the dual is actually only used for the +definition of the axiom, so I'll specify it here: + + -(-a) = a + -(a & b) = -a + -b + -(a * b) = -a | -b + -Top = 0 + -1 = Bottom + -(!a) = ?(-a) + +and vice versa in all cases. + + +Distributivity: + +This isn't actually related to the axiom, but I might as well while I'm at it. +None of these are built-in rules, they are just helpful notions provable within +the language itself. These are the distributive laws: + + a * (b + c) = (a * b) + (a * c) + a | (b & c) = (a | b) & (a | c) + a * 0 = 0 + a & Top = Top + +notice how "exponentials" convert "addition" into "multiplication"-- hence the names: + + !(a & b) = !a * !b + ?(a + b) = ?a | ?b + !Top = 1 + ?0 = Bottom + +and vice versa in all cases in both sets listed. + + +STRUCTURAL RULES +================ + +The weakening and contraction rules are specified twice since +I hope to extend this into an ordered logic, so I have to include +the exchange-requiring equivalents. This is also true for constructors and +eliminators in the computational rules. All of these can be implemented only +once, with the second rule being implemented in terms of the first via a swap +that /doesn't/ apply an unordered constraint. If I do not extend this to an +ordered logic, you can simply ignore all of the second rules. + +Weakening: a -> ?b -> a ### const + ?a -> b -> b ### flip const +Contraction: (a -> !a -> b) -> (!a -> b) ### join + (!a -> a -> b) -> (!a -> b) ### join . flip +Exchange: (a -> b -> c) -> (b -> a -> c) ### flip + (or equivalently (a * b) -> (b * a)) + +(todo: do I need a dual exchange rule for &?) + + +COMPUTATIONAL RULES +=================== + +These are the introduction and elimination rules for compound terms in the +language. Introduction terms are labeled with an i, elimination terms with an e. +When multiple introduction/elimination rules are required, they are each labelled +with a number. + + +Additive conjunction (with): + +Topi1 : a -> a & Top +Topi2 : a -> Top & a +additively (all of the context is used in either branch of the options a and b), + &i : a -> b -> a & b +&e1 : a & b -> a +&e2 : a & b -> b + +The eliminators may be called "projections". + +There is no elimination rule for Top, since it doesn't exist. It can only +be introducted in terms of the type signatures in Top1 and Top2, and the +only thing you can do with it is ignore it via the associated projection. +It doesn't have to exist because nothing using the projection for Top +can exist because it cannot be used for anything, nor weakened. + +Additive conjunction can be interpreted as a pair of procedure pointers, +with the context enclosed inside. The projections are function calls that +choose which procedure to invoke to consume the context. A call to Top +is equivalent to nontermination, since Top doesn't exist. + +The compiler could probably safely maybe automatically insert the +eliminators when the corresponding type is required, but I haven't totally +thought this through, and there are potential issues with e.g. +(a & b) & a, in the event that choice of a matters. + + +Additive disjunction (plus): + +0e : 0 -> a ++i1 : a -> a + b ++i2 : b -> a + b ++e1 : (a -> c) & (b -> c) -> (a + b -> c) ++e2 : (b -> c) & (a -> c) -> (a + b -> c) + +0, like Top, does not exist. It only exists as a fragment of the type +signature in disjunction introduction, because + +i1 (x : A) : forall b. A + b +and 0 is simply an instanciation of b, taking the entire forall thing +far too literally, as shown in its eliminator. It is impossible to +have an actual instance of 0, because by definition, it is the type +not selected when you create a +. In terms of elimination, all eliminations +of an 0 + a type are equivalent to (e1 0e), with the exception of the fact +that you have to destroy anything in your context that cannot be weakened. +This can be trivially implemented as using 0e to generate a function type +that directly consumes all of the terms in the context, and returning a c. + +The eliminators are rather intuitive. The choice of & is necessary because +each option must entirely dispose of its context, as is in the definition +of &i. + +A value of a + b is trivial: it's just a tagged union, i.e. an indicator +of whether it's a or b, and the value a or b. + + +Multiplicative conjunction (times): + +1i : 1 +1e1 : 1 * a -> a +1e2 : a * a -> a +*i : a -> b -> a * b +*e1 : a * b -> (a -> b -> c) -> c +*e2 : (a -> b -> c) -> a * b -> c + +1 does exist, and in fact its sole introduction rule is "1 exists", but +it holds no information, so in practice it doesn't have to be stored. +Formally it has only one elimination rule, 1 -> , but a function +can't return nothing, so instead you have to eliminate it via its definition +as the identity element. + +The rest of it is pretty intuitive. In memory, it's just a pair of values. + + +Multiplicative disjunction (par): + +Bottomi1 : a -> a | Bottom +Bottomi2 : a -> Bottom | a +Bottome : Bottom -> a +|i : ?a * ?b -> a | b +|e1 : ?(a -> c) * ?(b -> c) -> a | b -> c +|e2 : a | b -> ?(a -> c) * ?(b -> c) -> c + +Multiplicative disjunction is by far the least intuitive operator, corresponding +to delimited continuations and functions. + +Bottom does not exist. Like with additive disjunction, it's just part of +the type signature, and it simply exists to not get chosen. + +As you can see, |e produces only one c despite having two options, both +of which are provided in |i. That's because |e is inherently +nondeterministic. |i and |e are both entirely weakened because neither +choice will necessarily be chosen, yet they both must exist in full. This means +the entire closure that they are in must be somehow weakened, since it's +not possible to dispose of a full value in both branches at once, because +that would constitute double use. The use of the * in the signature is to +emphasize the relationship to multiplicative conjunction and that behavior, +just as additive disjunction is defined in terms of additive conjunction. + +A par value is implemented in terms of a pair of function calls. In the +eliminator, either function may be invoked, and when the value is used, +the eliminator may choose to forget the function halfway through and jump +to the other option instead, making it equivalent to a continuation, the +functional equivalent to a goto. + +The main use of par is in the sole axiom of the excluded middle, which encodes +the equivalent to functions and delimited continuations. For reference, the type +of a function is defined as (a -> b = -a | b). Essentially, the axiom can't pull +a value of type A out of thin air, so it is forced to choose the -a branch. +-a is equivalent to a -> Bottom, and therefore can only be used by providing a +value of type a, so instead of actually providing that Bottom, the function +simply jumps to the branch that demanded an a in the first place and returns +that result. Functions are implemented the same way, only kinda in reverse: +it runs the side that claims to have an extra a it needs to dispose of, and then +once it gets that hole, it produces the a in the other branch and terminates. +Implicitly in either case the context is consumed, which is equivalent to the +function returning. As you can see though, these are simply different +perspectives on the same axiom. + +If you don't get it, that's fine, because it's super confusing, and I don't +understand it either. + + +TYPECLASSES & MODULES +===================== + +I haven't really figured out typeclasses. Basically I intend for them to be +existential types (via dependent sums maybe?), but I need to figure out how to +make it practical first. + +Requirements: +* It must be possible to use the instanced values without having to unwrap the +class implementation manually first. +* It must be possible to use the function instances equally easily, and without +having to declare the names at each usage point. +* They must permit non-unique instances. +* Instances must be stackable, the outermost one being used unless the inner one +is exposed within one of the instance type-contextual manipulations (e.g. functor). +This is important especially since Copy should implement !, but it should be +possible to rc a copiable variable and have it behave as expected. Copy is +described in more detail in Mutation. + +Modules are essentially the same thing as typeclasses, and have similar +requirements. The answer to both probably lies in the same place. Lightweight +modules that are as easy to use as typeclasses would be a major plus too. + +I don't suspect this problem will be all that hard to resolve. + + +As far as ! and ? go, they are essentially typeclasses. @ below is a typeclass +too. Essentially, these are the introduction rules for ! and ?, though these +are not possible to derive without external functions (for obvious reasons), +and being typeclasses, it's not appropriate to give them introduction rules. + +To specify a !, you need a class instance satisfying either the contraction rule, +or equivalently, the following: + !i : a -> !(() -> a) + +To specify a ?, you need a class instance satisfying either the weakening rule, +or equivalently, the following: + ?i : a -> ?(a -> ()) + +The reason these are essentially introduction rules is made more obvious if you +wrap the entire thing into a (-> !a) or (-> ?a) respectively. + + +MUTATION +======== + +@ means "mutable" to the compiler. Normal values are immutable, which means to +make changes, the entire object has to be deconstructed and reconstructed again. +Mutation allows direct modification to the data structure without concern. +Generally things are mutable by default, but this may not be the case with +external values, or internal values via pointers. + +@ extends ?, which means a mutable pointer may be freed, but not !, so that +you cannot have multiple instances of a mutable pointer. + +Losing mutation in favor of replication: + rc : @a -> !?a, introducing a reference-counted pointer + +Some values may implement Copy, allowing deep duplication. All composite +structures may automatically derive Copy whenever both of their constituents +are !. Copy, of course, is an implementation of !, though using (rc) anyway +may be desirable for performance reasons, especially for highly composite +structures. + copy : Copy a => a -> @a + +Generally, syntactic sugar should eliminate most of this crap such that the +programmer shouldn't have to deal with it most of the time. diff --git a/template.xhtml b/template.xhtml new file mode 100755 index 0000000..23687b0 --- /dev/null +++ b/template.xhtml @@ -0,0 +1,65 @@ + + + + + + + + + + + + + Lijero + + + + + + + + + +

+
+
+

Test Content

+
+ +
+ + + diff --git a/xexprs b/xexprs deleted file mode 160000 index 2026c23..0000000 --- a/xexprs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2026c23aa83b6dd7f9bb03e38185a850ec6a2aac