procgen  verb.scm

verb-phrase generator

/lib/verb.scm is a library for simplifying the generation of verb phrases (phrases, in English, like "sit" or "get off" or "fuck her up"), which are annoyingly complex and require some fairly involved code to handle. this library takes the approach of treating verbs as functions. these can be called on tenses, which return a further function that can be called on a noun phrase or on its own, if the verb is intransitive. for instance, ((scare-off 'inf) "the mailman") might generate the string "scare the mailman off". technically, the library as implemented goes a bit beyond the scope of the linguistic category of the verb phrase, and is capable of incorporating prepositional phrases like "all over the floor" as though they were part of the verb.

since verbs are just functions, you don't actually need any of this code to make use of them; you can simply implement and use the protocol yourself. verb.scm is a technically library for generating functions that will automate the majority of this code-writing for you, allowing you to define verb classes that take a single string (or more, or other types besides) as an argument and return the entire nest of lambdas with all appropriate conjugations and appendages computed automatically. for instance, (phrase (verb:weak "fuck") "up") can when called with the appropriate arguments generate the forms "fucked her up," "fucking them up," "fuck Bob up", and "fucks up". the (verb-class) macro is used to automate the definition of functions like (verb:weak).

this specific implementation only has English verb classes, and should be trivial (or at least straightforward) to extend to other languages, it's reasonably generic. unfortunately the facilities for verb conjugation are fairly weak due to the limited verbal morphology in English, and using this codebase for Romance languages might require some work. if for some reason you want to try, tho, i'm happy to help; i speak a few of them.

an example of verb.scm in use can be found in drug.scm, at the time of writing heavily under development and still mostly just a bunch of embarassing test code for the support libraries. verb.scm itself is thoroughly commented, however.