text:
Talk:Japanese/Lessons/Other uses of particles

Untitled
Sorry, but the last example was, er, not correct Japanese and I commented it out.

At first, the correct sentence for "the new self I see in my dreams is strong but kind." is,
 * ぼく が ゆめ に みる あたらしい じぶん は つよい けど やさしい (or つよくて やさしい)

Thus, when you separate this into parts, perhaps,
 * 1) ぼくが ゆめに みる あたらしい じぶん - the new self I see in my dreams (noun part)
 * 2)  は つよい けど やさしい -  is strong but kind

I cannot evaluate whether or not this correct one can be used as an example here, since I lack grammatical abilities... - Marsian / talk 03:53:52, 2005-09-04 (UTC)

 * I agree about "kedo" in this example. other changes are not needed. the accent of this sentence is not that *I* see that new self in the dreams (that would justify the "buku ga" part), but rather that the new self of my dreams is such and such. thanks though for "kedo" - i really messed that part --lastguru 08:42, 4 September 2005 (UTC)

 * I agree with Marsian's proposed changes. The word order is strange. Did you take this example from a song or poem? Also, wouldn't つよくてやさしい mean strong and kind instead of strong but kind?

 * The boku ga is not emphasizing boku. It's just that ga is used to mark the subject in subordinate clauses, where wa cannot be used. ToothingLummox 18:41, 4 September 2005 (UTC)

 * OK, OK, I admit, I took the idea of construction of this example from a song. It goes "Naritai jibun yume ni miru no wa ..." (look in the google yourself). I am an awful in making examples. I have one person who promises to make examples... still no real results out of her except for excuses... If you want, you can start making examples for the future themes... I am going to research the point of using "boku ga" there some more. About the meaning of "kedo": I had "demo" from the beginning, which seems to be plain wrong, so I relied on Marsian's advice... are you suggesting that he is also wrong? --lastguru 20:34, 4 September 2005 (UTC)

 * I'm not sure what you mean about me suggesting that Marsian is wrong. Do you mean つよくてやさしい vs つよい けど やさしい? I think that there is a very slight difference of meaning between the two. Here's what I think. The one without kedo is strong and kind. The one with kedo is strong but kind. I think either is grammatical, but you should trust Marsian's native ear. Consider a cute and dirty child vs a cute but dirty child. They mean alsmost the same thing, but the second is more natural in most situations. ToothingLummox 23:11, 4 September 2005 (UTC)

Isn't kirei an adjective? And isn't na used after na-adjectives, not nouns?

 * There are no adjectives as such in Japanese, and it is misleading to call them adjectives. They are either attributive nouns, or attributive verbs. In both cases they act like nouns and verbs correspondingly. There is much confusion over this theme inspired by most text books, but I am not going to support that confusion. What acts like a noun is a noun; what acts like a verb is a verb. Unless you convince me that I am wrong... --lastguru 20:34, 4 September 2005 (UTC)

 * Let's compare kirei (clean), midori (green), and semai (small) in front of a noun:
 * kirei na heya          (a clean room)
 * midori no heya       (a green room)
 * semai heya                            (a small room   note: semai = narrow, and is used to mean small in two dimensions)
 * Clearly they connect to the noun differently. kirei is not the same thing as a "true" noun.

 * hmm... Thank you for pushing me to the research, and these examples... I would have not chosen better ones :). I knew, I knew we will find something fishy during the course, something that is described misleadingly or not at all in most text books. One of these things seem to be "no" and "na" relations. why do you think kirei is more adjective then midori? the four classic colors (akai, aoi, shiroi and kuroi) are attributive verbs (i-adjectives), not nouns (well, actually they do have a noun form: aka, ao, shiro and kuro, but that's another story). The reason "no" is used there as I understand is that there is perhaps a subtle difference between these colors and other nouns... most other nouns may be put in both "na" and "no" constructions. Basically, "no" and "na" are of a very close meaning and the description I gave for the "no" should be corrected (it is not an indication of possession, and has never been). Both particles transforms a noun to an attribute. This page: http://www.kortlandt.nl/publications/art191e.pdf says that "na" means a direct attribute (???such that the object possesses by itself???), while "no" - indirect (???such attributes or evaluations that we are giving to the object???). More discussion on this topic would be appreciated. --lastguru 17:24, 8 September 2005 (UTC)

 * For the time being, let's try to avoid using words like "adjective" and "noun" and "verb". What I'm trying to point out is that there are different kinds of words, and they need to be distinguished. -no and -na for the most part do not attach to the same words. When they do, there is usually a change in meaning. And after all, it is possible for a word to belong to more than one part of speech (English book is both a noun and a verb).

 * It is pretty obvious that when you attach different particles to the same words you get different meanings, isn't it? And we will not be able to avoid naming word classes as we need to differentiate words. Until now I am sure that nouns and verbs should go separate as their usage is completely different. So we can use these names. As for adjectives, we can hang with the proposed classifiers (attributive nouns and attributive verbs) just because the usage of these attributive words are too much like the nouns/verbs than would be possible to separate. --lastguru 01:01, 9 September 2005 (UTC)

 * I missed this part of your post before. So then we agree that not all "nouns" are identical? That there are "normal" nouns and "attributive" nouns? The distinction is very important to make.
 * purely "normal": The vast majority of nouns simply cannot take -na. Also, I'm fairly sure these same words cannot be made into adverbs by adding ni.
 * purely "attributive": There are some words that can only take -na. These words cannot serve as "normal" nouns, but at least some of them can become adverbs.
 * both?: Those words that take -na sometimes (often? but definitely not always) can also take -no, but it seems to me that the meaning is often quite different (it's as though it were a "normal" noun). Additionally, it seems to me that these dual na/no words are able to function as "normal" nouns in sentences. All of this suggests to me that these dual words are both "normal" nouns and "attributive" nouns.

 * Anyway, my amateur linguistics aside, do we agree on the basic point that -na and -no words need to be distinguished? And that some words can take either -na or -no but that the meaning tends to change? Pretty much everything beyond that is more than the students need to know. What to call the adjective-type words should probably be discussed on the japanese-wiki group. ToothingLummox 04:29, 9 September 2005 (UTC)

 * Same as countable and uncountable nouns, animate and inanimate nouns, these two categories may as well be distinguished, as there are some slight diffeences in usage. The "-na" particle is nevertheless used more often than we may ever point out, as it is used in process of creating new words (in other words, it is a normal process, natural development of the language, for a "pure" noun, or how would you call this, to become used also with "-na"). You may count this as "yes" and start putting such comments in the vocabulary given on the previous pages. --lastguru 12:34, 10 September 2005 (UTC)

 * In the link you pointed out, words were chosen that can take both -no and -na in order to focus on the difference between the two. I don't think you'll find many cases of kirei no or midori na. You also won't find genki no or byouki na. And you defintely won't find sensei na or kuruma na but you will find both sensei no and kuruma no.

 * Well, that is obvious too that some words are more commonly used as are direct objects, some - as indirect objects, and some can work in both situations. Lets compare two words in English: child and heaven. how they are different? they are both nouns, aren't they? but if you want, for example, to say that something has properties of a child, you would say "childish"; when you would point out properties of a heaven, you would say "heavenly". Then there are countable and uncountable nouns, like cat and time. Would you classify the examples I gave into diferent parts of speech? no, you give then names such as "countable noun". And as much as some nouns like "-no" and some - "-na", some nouns in English like "much" and some - "many". As for your examples... well maybe some of them are appropriate although you are pointing out they are not. quich google search (and i was looking for romaji!) reveils for example this: http://www.waxinlyrical.com/lyrics/kireinayozora-angelastellv.html, http://www.imdb.com/title/tt0161610/ , and I was too lazy to check other words. So you see, the combinations are legitimate.  --lastguru 01:01, 9 September 2005 (UTC)

 * Well, the kirei no example you found is a typo. Both the page url and the lyrics in the song itself have kirei na. The genki example I gave wasn't so good, however. genki can defintely be used as a noun (it was even one of the examples on that page you gave). genki no kamisama means the god of vitality or somesuch. The meaning is quite different from genki na kamisama, which would be more like an energetic god. Oops. Anyway, bad example aside, I stand by everything I wrote.

 * P.S. searching in romaji is probably not the best way to find reliable examples of Japanese.  ;)
 * -- ToothingLummox 02:11, 9 September 2005 (UTC)

 * I know romaji search is no the best thing, but my Japanese comprehension abilities are still very limited, unfortunately. The main problem is that I do not know much words, grammar is lesser problem for me. If you do not have such a problem, try searching for "みどりな" in the google - there are some matches, which I was too lazy to translate. Anyway, I stand by everything I wrote too, so lets just stand there and observe each other from the distance? The ultimate goal of the course is to make students aware of Japanese like of their native language, btw. --lastguru 12:34, 10 September 2005 (UTC)

 * Google hits
 * みどりの: 2.5 million
 * みどりな: 895
 * of which some are the na we are looking for and some are
 * midori nakayoshi   96   getting along with green (or is it a girl named Midori?)
 * midori nakamachi 21  station name
 * midori nakama 16   green bunch
 * midori nara 12 if it's green
 * midori nado 7   green, etc.

 * Using kanji:
 * 緑の: 2.2 million
 * 緑な: 60,000
 * of which
 * waga tani wa midori nariki 15,100 movie title "How green was my valley"
 * 〜wa midori nariki 834  how green was 〜
 * ’’midori nado''        100   green, etc.

 * 先生の: 3.5 million
 * 先生な: 162,000
 * sensei na no: 50,000 Is (someone) a teacher? and similar
 * sensei nan     1,000 verbal contraction of above
 * sensei nara       523 If someone is a teacher

 * ピンクの (pink) 3.6 million
 * ピンクな 140,000

 * きれいの: 97,000 interestingly most of them apparently related to cosmetics (e.g., "the secret of kirei", "the school of kirei")
 * きれいな: 3 million

 * Anyway, these results are interesting. It seems to me that what we are seeing here is largely a break between more formal and more informal/playful uses of the language. Performing the same searches on a corpus like [Eijiro] does not turn up the less common forms. In any case, simply saying that -na turns nouns into adjectives (as the lesson originally said) is totally inadequate.

 * These results also bring us to issues of what kind of Japanese we want to teach here. This issue really needs to be addressed, and soon.
 * Also, saying that the students should become "aware of the language like native speakers" is a bit (just a bit) ambitious and a bit odd. It's too ambitious to be useful to those of us contributing to the course. It's odd because you haven't defined which native speaker you are talking about. Additionally, native speakers don't think about all of the grammar, linguistics, etc. The goal and audience of the course really need to be discussed (as I have been pushing for).

 * -ToothingLummox 17:52, 10 September 2005 (UTC)

 * You also won't often see kirei preceding particles like ga and wo.

 * I have, I have heard that. There is a cute song in Inu Yasha anime: "Kirei wa kitanai, Kitanai wa kirei, Ii wa warui, Warui wa ii, Shinuru wa ikiru, Ikiru wa shinuru". --lastguru 01:01, 9 September 2005 (UTC)

 * I did write "often". In the examples above you have every old thing in front of the particle. This is not really normal. ("clean is dirty, dirty is clean...") On the other hand, it is not in the least strange to place midori in front of ga. (midori ga utsukushii Green is beautiful). (btw should shinuru be shinu?)
 * P.S. Be careful when using songs as examples. Language tends to be freer and poetic in songs and poems.
 * --ToothingLummox 02:11, 9 September 2005 (UTC)

 * The song I posted is spelled correctly. "shinuru" is a classical rentaikei form of "shinu". You can read up on this here: http://www.classical-japanese.net/Grammar/verbs.html . Regarding songs and classic literature, I think students should be able to comprehend these by the end of the course. The living language is not only official papers and modern TV news broadcarts, but also the legacy form old times. There should be no problems for students to read poems and classic literature, as well as historical movies. --lastguru 12:34, 10 September 2005 (UTC)

 * --ToothingLummox 23:24, 8 September 2005 (UTC)

 * Notice that semai conjugates differently from "normal" verbs like kariru (to rent), etc. Take the past tense:
 * semakatta                             (was small)
 * karita                                    (rented)

 * yeah, and why does the group 1 verbs conjugate differently from group 2 verbs? :). And as far as I know, verbs may also be used as attributes... go figure... the more i look on this matter, the more i see that there are no adjectives as such in japanese, only nouns and verbs... maybe sometime i will tell that this all is a BS and there are no nouns either, only nominative verbs... LOL... :) --lastguru 17:24, 8 September 2005 (UTC)

 * I was only trying to point out that semai needs to be distinguished from kariru. -- ToothingLummox 23:24, 8 September 2005 (UTC)

 * In the list of conjugations, yes. --lastguru 01:01, 9 September 2005 (UTC)

 * So there has to be some way to distinguish these different categories. Many textbooks use na-adjective or noun-adjective. They also have Japanese names (keiyoudoushi etc), and I imagine linguists have still other names (perhaps the ones you're using?). Anyway, you can call them whatever you want, but they need to be distinguished. Also, some abbreviation should probably also be adopted, for instance NA for na-adjective. Keep in mind that there is no reason to burden the language student with long or unfamiliar names; most textbooks rightly avoid doing so. ToothingLummox 22:55, 4 September 2005 (UTC)

The primary difference between kedo and demo (but):

 * kedo appears at the end of one clause and connects it to the next to make a single new sentence.

 * demo appears a the beginning of a sentence. The two clauses remain separate sentences.

ToothingLummox 18:41, 4 September 2005 (UTC)

 * maybe... thanks... --lastguru 20:34, 4 September 2005 (UTC)

you did it again...
So, you have commented out my example... again. Is this example so incorrect that you have to comment it out instead of just correcting it? I myself think that the example was indeed correct, just complicated. Please note that nobody is requiring the students to form such examples themselves, and the next page goes about creating simple sentences. A complicated example was inserted here on purpose, to give students something to think about, and I think I have introduced the theoretical material for them to be able to understand the example fully. It is not that I am not valuing our cooperation (although you may doubt that after our recent discussions, I am really happy and grateful for all your help and support) or the substitute examples you gave, it is just that I think a more complicated and not standard example should also be used in our course. Any comments? --lastguru 11:10, 10 September 2005 (UTC)

 * Well, the first time it was actually a native speaker who commented it out.
 * The word order in the example is strange. Maybe it's an example of post positioning or perhaps it's a list.

 * The new me, the one I see in my dreams, is strong but kind.
 * The new me, what I see in my dreams, is strong but kind.

 * Anyway, while it is encountered in songs and poems, it's not that common a word order. Clauses normally precede what they modify. I don't think we do our students any favors by introducing this less common form here. There were also a couple of small errors here and there (の isn't need to connect miru and jibun).

 * This particular example aside, I think the students have not really been prepared to deal with it.
 * I think that the use of relative clauses (such as the kono shiroi neko ga miru yume) is inadequately explained above.
 * Relative clauses
 * they come before the word being modified
 * は cannot be used as the topic marker, and so issues of focus change
 * if the subject comes immediately before the verb, ga can become no
 * verbs and attributive verbs connect directly to the noun being modified
 * attributive nouns connect with -na.
 *  kao ga kirei na onna no ko
 * The girl with the pretty face
 * nouns connect with -no
 *  otousan ga sensei no onna no ko
 * The girl whose father is a teacher.

 * Also, nominalizers could have been dealt with more carefully. In addition to no, there is another nominalizer koto. The two have some usages in common and some distinct (a little like English to read and reading).

 * --ToothingLummox 15:21, 10 September 2005 (UTC)

 * Hmm... "あたらしい　じぶん　ぼく　の　ゆめ　に　みる　の　は　つよい　けど　やさしい" does not form a complete sentence.
 * "あたらしい　じぶん　は　つよい　けど　やさしい" is OK.
 * "ぼく　の　ゆめ　に　みる　の　は　つよい　けど　やさしい" is NOT.
 * → "ぼく　の　ゆめ　に　みる　 じぶん 　は　つよい　けど　やさしい" or "ぼく　の　ゆめ　に　みる　の　は　つよい　けど　やさしい じぶん " is acceptable.

 * I can imagine two cases (I use ぼくが instead of ぼくの for clarification):
 * Beginning with ぼく は じぶん を ゆめ に みる. → ぼく が ゆめ に みる のは、じぶん.
 * ⇒ What kind of じぶん? → あたらしい じぶん / つよい けど やさしい じぶん
 * ⇒ ぼく が ゆめ に みる の は、つよい けど やさしい、あたらしい じぶん.
 * So, if you want to insert parentheses, maybe they should be put as: ぼく が ゆめ に みる のは じぶん.
 * Beginning with じぶん は、つよい けど やさしい.
 * ⇒ What kind of じぶん? → あたらしい じぶん / ぼく が ゆめ に みる じぶん
 * ⇒ ぼく が ゆめ に みる あたらしい じぶん は、つよい けど やさしい.
 * So, if you want to insert parentheses, maybe they should be put as: じぶん は、つよい けど やさしい.  - This is what I proposed first
 * In both cases, a noun "じぶん" is modified by the phrases (er... clause?) before it, not after it. Compare Lastguru's example, in which じぶん is modified by the phrases after it: "あたらしい じぶん は...". Perhaps this is why I and ToothingLummox felt the example strange.

 * BTW, maybe ゆめみる is better fitted than ゆめにみる for this kind of expressions. Ordinary, you don't actually see yourself in your real dreams but you just imagine the ideal form of you when you are awake... Well, ゆめにみる can also mean it, but ゆめみる is more specific. Also, ゆめ に えがく or おもい えがく has nealy the same meaning. Hope this helps. - Marsian / talk 04:59:14, 2005-09-11 (UTC)


text:
Neapolitan

Panoramic shot of Naples

Neapolitan (napulitano in Neapolitan and napoletano in Italian) is the Romance language spoken in the city of Naples, Italy and in all or parts of the surrounding regions of Abruzzo, Basilicata, Calabria, Campania, Lazio, le Marche, Molise, and Puglia.

Neapolitan can be a challenging language at times as it is non-standardized. That is, there is no absolute authority that is the go-to source for spelling and usage. That said, there are many generally accepted norms used throughout Neapolitan's large literature. We will focus on those here while pointing out variants where it is important or interesting.

Grammar

 * pronunciation
 * alphabet
 * nouns
 * articles
 * prepositions
 * adjectives
 * pronouns
 * verbs
 * adverbs
 * conjunctions
 * interrogatives
 * syntax

Usage

 * greetings
 * 501 Neapolitan verbs
 * numbers
 * calendar
 * colors
 * weather
 * food
 * parts of the body
 * rooms of the house
 * expressions and figures of speech

Resources

 * bibliography
 * sites
 * For further information on the language itself, see the Neapolitan language Wikipedia page.
 * Visit the Neapolitan Wikipedia!

Napolitano Napoletano/Copertina

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: Neapolitan


text:
User talk:Lekoman32

Welcome
Welcome to Wikibooks, Lekoman32. I hope you like the place and decide to stay. Here are a few good links for newcomers: I hope you enjoy editing here. By the way, you can sign your name on Talk and vote pages using four tildes, like this: ~~~~. If you have any questions, see the help pages, add a question to the Community Portal or ask me on my Talk page. Again, welcome to Wiki Books.
 * The Five Pillars of Wikipedia
 * How to edit a page
 * Editing tutorial
 * Picture tutorial
 * How to write a great article
 * Manual of Style

I moved your outline to the Corporate Identity Design text. I hope that's OK. --DavidCary 04:08, 3 December 2005 (UTC)

title: User talk:Lekoman32


text:
Graphic Design/Corporate Identity Design

=Corporate Identity Design=

Looking at the logo for any well designed corporate identity schema gives the observer only a superficial glimpse, the tip of the iceberg, so-to-speak, of what amounts to a complex and often heavily regulated system of graphics, phrases, and service/product concepts designed to present the strongest, best face of a company to its consumers.

Corporate identity differentiates itself from branding by referring less to the identity of a product or service and more to the identity of the organization behind the product or service, though often these commingle (The Coca Cola Company and its product "Coca Cola" being perhaps the most well-known example).

An organization's identity package can be one of its most valuable assets, and, as such, great care should be taken in its development and usage. The identity is what customers will imagine, when they think of the company. Corporate identities can define companies as old corporate names, or as vibrant imaginative enterprises.

 * Introduction
 * What Identity is
 * What Identity means to a company
 * The Logo
 * Definition of Logo
 * Logotype vs. "Icon" style
 * Applications of the Logo
 * What a logo is not
 * Additional Graphic Elements
 * The Corporate Slogan/Motto/Mission Sentence
 * Color
 * Stylistic Considerations

For further reading

 * Strategic planning


text:
Talk:Biblical Studies/Christianity/Overview

User:203.26.206.129
Your approach to Christianity on this outline page is up for review under new guidelines. Certainly, content should be NPOV. The admins are moving certain types of books to Wikicities. There is no Christian wiki as such on that site. I wonder why, maybe they only want Religion-wiki. More information in Staff lounge.


text:
Orthopaedic Surgery

Textbook Of Orthopaedic Surgery - A collaboration

Contents

 * [[File:100%.svg]] Preface
 * [[Image:25%.svg]] Chapter 1: Basic Sciences
 * [[Image:25%.svg]] Chapter 2: Upper Limb
 * [[Image:25%.svg]] Chapter 3: Foot and Ankle
 * [[Image:25%.svg]] Chapter 4: Spine
 * [[Image:25%.svg]] Chapter 5: Hand and Microsurgery
 * [[Image:25%.svg]] Chapter 6: Paediatric Orthopaedics
 * [[Image:25%.svg]] Chapter 7: Adult Reconstruction
 * [[Image:25%.svg]] Chapter 8: Sports Medicine
 * [[Image:25%.svg]] Chapter 9: Musckuloskeletal Tumours
 * [[File:00%.svg]] Chapter 10: Injury
 * [[File:00%.svg]] Chapter 11: Surgical Procedures
 * [[File:00%.svg]] Chapter 12: Rehabilitation
 * [[Image:25%.svg]] Chapter 13: Practice

title: Orthopaedic Surgery


text:
Wikijunior:Solar System/The Mystery of Space

The Solar System consists of the Sun, eight planets, and many asteroids, comets, moons and planetoids. The Sun is the primary source of energy for everything in the solar System. Earth and the other bodies in the Solar System were created from the remains of the dust cloud from which it was created after the birth of our Sun.


text:
Rebol Programming/Internals

The System Object
The System object is a very large object that contains most of the mezzanine code in Rebol, that is VID, the network protocols and system information about the Rebol product you are running.

Native Functions
Native functions are functions that are hardwired into the kernel of Rebol. They can be considered low-level functions, that are designed for speed. A wide range of native functions exist.

You can reveal a native function in the console like this:

>> source insert insert: native [ {Inserts a value into a series and returns the series after the insert.} series [series! port! bitset!] "Series at point to insert" value [any-type!] "The value to insert" /part "Limits to a given length or position." range [number! series! port! pair!] /only "Inserts a series as a series." /dup "Duplicates the insert a specified number of times." count [number! pair!] ]

The source code cannot be seen since the function is compiled into the Rebol interpreter kernel.

Mezzanine Functions
Mezzanine functions are functions that are built on top of either native or other mezzanine functions. This means you can change them or build more functions on top of existing ones. Rebol has in all of its products many mezzanine functions built in.

They can be considered higher level functions, that are designed to provide ease of use, when coding your Rebol programs. The internet protocols in Rebol such as HTTP or POP3 are built as mezzanine functions.

When designing your own programs, you can build your own functions that blend in with the existing mezzanine functions, for example if you wish to extend Rebol with a new internet protocol.

Mezzanine functions are also special in that you can see the source code for them on the console like this:

>> source append append: func [ {Appends a value to the tail of a series and returns the series head.} series [series! port!] value /only "Appends a block value as a block" ] [    head either only [ insert/only tail series :value ] [        insert tail series :value ] ]

title: Rebol Programming/Internals


text:
Rebol Programming/About Rebol

About Rebol
Rebol is a highly versatile, multiplatform scripting language for Lightweight Distributed Computing created and maintained by Carl Sassenrath. Originally, REBOL was an acronym Relative Expression-Based Object Language.

It was designed with the aim of being a human-centric, network-based messaging language. It is a first class functional scripting language with automatic memory management, higher order functions, exception handling, and dialecting. It includes many built-in functions that allow you to work with math, text, files, networking, graphics and multimedia.

The emphasis is small code size and small footprint and it has the ability to use a single executable to run your scripts. The scripts can therefore be run from for example a floppy disk or a USB key without installing anything on the host PC. The interpreter is in many cases small enough to reside with your scripts on a single old-fashioned 720K floppy!

Rebol can be used for scripts that are a few lines long and do simple operations and scale up to full size applications.

Operating system independency at the source-code level
Rebol is available for over 40 platforms which largely makes it platform independent. There are variations, though in exactly which products and how many features are available for these platforms.

But the core works the same everywhere, including well integrated network-support. Imagine one- or two-liner scripts that send information to and from remote computers, and you have a small taste of the power and flexibility that Rebol can offer you.

The fact that Rebol code will run on any of the supported platforms without modification even when the code makes use of graphical user interfaces and networking functionality is quite powerful and, frankly, addicting.

Example of the same code on different platforms: view layout [ text "Hello world!" button "Quit" [unview] ]

Rebol basic products
Rebol consists of many products built on top of each other:

 * Rebol/Core : This is the basic version that holds most of the necessary components to run basic Rebol programs. Rebol/Core is command-line centric, and offers quite a bit of power, and - among other things - is ideal for (but not limited to) CGI scripting. This version is freeware and is downloadable from the official Rebol web site.

 * Rebol/View : Includes extended GUI functionality built on top of Rebol/Core. Adds graphical capabilities and is also freeware. This is the most popular version of Rebol available to anyone. Since version 2.7.6 it handles DLL library access.

 * Rebol/View Pro : Adds further functions to handle DLL library access and encryption. This version costs money and is considered useful for advanced programmers, who want to take advantage of operating system specific functions.

 * Rebol/Command : Adds even more functions to handle SSL access, database, and Fast CGI functions.

Rebol is built this way to let you choose how much functionality is needed. If you don't need graphics, you can settle for Rebol/Core.

It's also built this way to allow newly developed features to be easily built for all products, starting with Rebol/Core.

Each product comes as a single executable file that doesn't need to be installed.

Rebol actually consists of even smaller components, but these are not available as single downloads in their free versions.

Developer products
Various developer products exist for advanced developers who want the maximum of Rebol for larger application development and deployment in business situations:

 * Rebol/SDK : Allows you to create encapsulated programs as executable files.

 * Rebol/Command SDK : The same as Rebol/SDK only using Rebol/Command as base.

Both products give you more control of what you want to include and reveals a finer grained component set that Rebol is built of:

 * Rebol/Base

 * Rebol/Face

 * Rebol/Encap

These products are out of the scope of this book.

End user products
Various enduser products exist that show off what Rebol can do. This book is not intended to do such an advertisement, but two such products are mentioned here:

Rebol/IOS, the Rebol Internet Operating System is a lightweight groupware system made by REBOL Technologies.

AltME is a secure instant messaging system with functions for sharing calendar information, checklists, todo lists and IRC-like chat rooms.

title: Rebol Programming/About Rebol


text:
Rebol Programming/Installing Rebol

Installing Rebol
Rebol/Core does not come with an installer. It's a simple executable file which starts the console when you execute it. When it's started, you can start writing and running Rebol scripts.

Windows
Rebol/View for Windows comes with an installer which allows you to optionally install Rebol/View. If you choose to install Rebol/View, it adds registry entries that allows you to run Rebol scripts directly by doubleclicking them in File Explorer or another file manager.

If you choose not to install Rebol/View, you can run scripts through the Viewtop or the console, you can even add the registry entries manually, if you prefer.

Linux
Rebol/View for Linux does not have an official installer like on Windows. There are installers made by fans that you can use at this site, remember to reboot your PC in order to initialize new fonts.

Official Rebol comes in a compressed archive, which can be opened using "tar" at a command line or using a graphical program like Xarchiver or File-Roller. Once extracted, Rebol/View can be run from the console just like Rebol/Core.

Rebol for Linux has some library dependencies, which can be determined by doing an "ldd rebol" in the console. For Rebol/Core, these are typically the C library, the math library, and the linker. On 64-bit systems a 32-bit library installation may be needed.

Rebol/View has more dependencies, since it is dependent on Xorg to display graphics. The list of dependencies for Rebol/View is long, and some distributions separate Xorg into many pieces, such as Arch Linux and Gentoo; make sure that all needed libraries are installed before running Rebol/View.

OS X
Rebol for OS X requires OS X Jaguar to run.

title: Rebol Programming/Installing Rebol


text:
Rebol Programming/The console

The console
The interactive console is where you can do much of the programming needed to test small segments of code and to try out various functions. It's the best way to learn Rebol functions.

If you have Rebol/View you can access various utilities from the console, such as the Desktop, a text editor and basic utilities for inputs, usable in your programs.

How to access the console
The console can be accessed directly when you start Rebol/Core using Rebol.exe but this will not allow you to use the desktop or editor commands.

If you start Rebol/View, it will start from the Viewtop. The console can be accessed in the left side of the window with the bottom icon. To get to the console, click on the icon. You can return to Viewtop by entering the desktop command at the console prompt.

Using the console
Some important basics about the console are nice to know before starting with Rebol programming. You'll be spending a lot of time with the console!

Simply by typing commands, you can start using the console. If you type:

>> now

Rebol will return the current date and time

== 2-Sep-2005/2:12:42+2:00

A different example:

>> print "Hello world!" Hello world!

Math is possible:

>> 2 + 2 == 4

Notice the >> and == symbols:

 * >> : This is your prompt where you enter functions and commands.
 * == : This is a symbol for a returned value from the previously executed program or operation.

The print function we used earlier just produced output at the console. The return value of the print function is a special value ignored by the interpreter when displaying results.

Let's try something that'll cause an error:

>> 2 / 0 ** Math Error: Attempt to divide by zero ** Near: 2 / 0

Rebol kindly produces an error information text using the ** symbol.

History commands
If you want to retry these examples again, use the cursor up key on your keyboard to access Rebol's history of executed functions.

To move the console scroller you can use mouse or the Page-Up and Page-Down keys

To display previously entered lines you can use the Up and Down arrows, like on a Linux console.

To modify them use the Home and End keys with Delete, Backspace and Left or Right arrows.

TAB auto-complete
The TAB key can be used for autocompletion: Rebol will try to complete what you are typing. For example if you press just a and then you press TAB, you'll get a suggestion of all words starting with a:

>> action! any-type! any-word! any-function! any-string! any-block! action? any-type? any-word? any-function? any-string? any-block? and add and~ absolute at alias all any as-string as-binary access-os arccosine arcsine arctangent abs as-pair about apply also append ajoin array alter attempt ask ascii? any-path! any-path? any-object! any-object? assert alert aqua alive? a

So, if you type ale, it will complete with alert, the only word starting with ale: >> alert

If you declare a variable, like aaa, Rebol will memorize it and it will auto-complete also with that.

Console help functions
The console help can be accessed using the help command or its shortcut, the question mark ?. It can:

1- Find a word in the Rebol dictionary and describe its contents. Examples:

>> ? day No information on day (word has no value)

>> ? pi PI is a decimal of value: 3.14159265358979

>> my-word: "beginning" == "beginning"

>> ? my-word MY-WORD is a string of value: "beginning"

2- Describe the syntax of a function:

>> ? now USAGE: NOW /year /month /day /time /zone /date /weekday /yearday /precise DESCRIPTION: Returns the current local date and time. NOW is a native value. REFINEMENTS: /year -- Returns the year only. /month -- Returns the month only. /day -- Returns the day of the month only. /time -- Returns the time only. /zone -- Returns the time zone offset from GMT only. /date -- Returns date only. /weekday -- Returns day of the week as integer (Monday is day 1). /yearday -- Returns day of the year (Julian) /precise -- Use nanosecond precision

3- If you type part of an element in a string, Rebol will return any element with that string:

>> ?? part-of-searched-word Print result here

>> ? wor Found these words: any-word! datatype! any-word! any-word? action! Returns TRUE for any-word values. get-word! datatype! get-word! get-word? action! Returns TRUE for get-word values. lit-word! datatype! lit-word! lit-word? action! Returns TRUE for lit-word values. my-word        string! "beginning" set-word! datatype! set-word! set-word? action! Returns TRUE for set-word values. to-get-word    function! [value] to-lit-word    function! [value] to-set-word    function! [value] to-word        function! [value] word! datatype! word! word? action! Returns TRUE for word values.

You can also use quotes to search for strings. Notice the difference between these two examples:

>> ? "find" Found these words: find           action! Finds a value in a series and returns the series a...  find-key-face   function! Search faces to determine if keycode applies. find-window    function! Find a face's window face.

>> ? find USAGE: FIND series value /part range /only /case /any /with wild /skip size /match /tail /last /reverse DESCRIPTION: Finds a value in a series and returns the series at the start of it. FIND is an action value. ARGUMENTS: series -- (Type: series port bitset) value -- (Type: any-type) REFINEMENTS: /part -- Limits the search to a given length or position. range -- (Type: number series port) /only -- Treats a series value as a single value. /case -- Characters are case-sensitive. /any -- Enables the * and ? wildcards. /with -- Allows custom wildcards. wild -- Specifies alternates for * and ? (Type: string) /skip -- Treat the series as records of fixed size size -- (Type: integer) /match -- Performs comparison and returns the tail of the match. /tail -- Returns the end of the string. /last -- Backwards from end of string. /reverse -- Backwards from the current position.

Other useful information about the current work session can be found using the following Rebol words:

probe      : Displays the contents of a Rebol word in its original format. source     : Displays the contents of a Rebol function. what       : Lists all Rebol words currently defined. what-dir   : Displays name of the current directory. list-dir   : Lists all filenames in current directory. change-dir : Change current directory.

Stopping programs
You can stop a program, if it's run from the console, or if it outputs to a console opened from within the program, by pressing the Escape key. This will return you to the prompt.

title: Rebol Programming/The console


text:
Rebol Programming/Internal utilities

The Viewtop
The Viewtop is Rebol/View's builtin graphical desktop. It's mainly used to access programs available from various Rebol sites around the world. It can also be used to access files locally on your own PC.

Using the Viewtop
On first startup, the Viewtop will come up automatically.

You can change the default behavior using the User Preferences menu item.

To start the Viewtop from the console type:

>> desktop

or >> viewtop

Facts about the Viewtop
The Viewtop is written as a range of mezzanine functions using the VID graphical user interface system and is essentially open source.

The text editor
The text editor is handy for editing smaller scripts that are too large to write in the console. It's not very complex so it's not suited for larger projects. It can be launched from the console by writing:

>> editor none

Or

>> editor ""

Or if you give a filename:

>> editor %script.r

You can then run scripts in the editor by pressing Ctrl-E.

You can also use it to view large data objects that are hard to study in the console:

>> editor system/view

title: Rebol Programming/Internal utilities


text:
Rebol Programming/Programming in Rebol

Functional and symbolic programming
A lot of the power of Rebol comes from the fact that it is both a functional programming language and a symbolic language.

As a functional programming language Rebol uses a sequence of expressions (built from functions) that are evaluated to produce a flow of results which pass from expression to expression. Rebol has no keywords, and words evaluate depending upon context. Generally the order of evaluation is from left to right with some exceptions for special operators.

A symbolic language is one that lets you represent and manipulate symbols (words) the same as any other values of the language. The advantages of symbolic programming will become more clear as your Rebol skills improve. It is the key that unlocks the door to dialecting, allowing you create even more powerful programs with less code, as well as sending Rebol expressions around the Internet to be evaluated on other computer systems, not just your own. (Called "distributed computing".)

Delimiters
Whitespace characters, such as space, tab, newline, newpage act as delimiters as in English, separating values from one another. They signal the end of one value and the start of another one.

As an example, this is a series of three values (integer 1, operator + and integer 2), which represent an expression: >> 1 + 2 Notice the spaces. If we omit the spaces, we obtain: >> 1+2 which is considered as one, syntactically illegal value.

Other characters that can take a delimiter role are: ( ) " [ ] { } ;.

This is important as when writing Rebol code, the language allows freedom of choice so that your program can be written entirely on one rather long line, or split and indented on multiple lines. The latter is the preferred method, and the reader is advised to follow the published guidelines on how to format source code. (Rebol/Core User's Guide - Section 5 - Style Guide)

Operators and simple expressions
Rebol uses arithmetic operators: +, -, *, /, //, **, boolean operators: and, or, xor and comparison operators: <, <=, <>, =, ==, =?, >, >=. They usually are binary, consuming an argument on each side. Example: >> 2 > 3 == false

Every operator has got a function counterpart:

For example, the above expression can be rewritten as follows: >> greater? 2 3 == false

Exceptions:

 * 1) Operators can be used as prefix (although it generally isn't advisable, because it could damage the readability of the code, and, moreover, it isn't officially supported).
 * 2) The - operator can be used as unary (the function counterpart is called negate).

Examples: >> + 2 3 == 5 >> - 2 == -2

Complex operator expressions
More complex operator expressions can be written. There are two rules to keep in mind: Example: >> 1 + 2 * 3 == 9 Notice that the addition on the left was performed before the multiplication. If we wanted to perform the multiplication first, we could have reordered the expression: >> 3 * 2 + 1 == 7 Or use parentheses (always use parentheses with long formulas, you'll avoid mistakes) : >> 1 + (2 * 3) == 7 Let us suppose that we wish to compare the results of two expressions: 1 + 3 and 2 + 2. We should use parentheses to achieve the desired evaluation order: >> (1 + 3) = (2 + 2) == true While the first pair of parentheses is not necessary (the leftmost addition is performed first anyway), that is not true for the rightmost addition. If we omitted the second pair of parentheses, we would compare the result of the leftmost addition with 2, which is legal, but we would obtain an illegal addition trying to add 2 to false: >> 1 + 3 = 2 + 2 ** Script Error: Expected one of: logic! - not: integer! ** Near: 1 + 3 = 2 The error report doesn't look very understandable, it is the same report we would have obtained in the following case: >> false + 2 ** Script Error: Expected one of: logic! - not: integer! ** Near: false + 2
 * 1) All operators have the same precedence.
 * 2) Operator expressions are evaluated from left to right.

Collecting expression results
Usually we evaluate only one expression and need one result. However, it is possible to evaluate more expressions one after another:

>> 4 + 6 7 + 8 == 15 It evaluated 4 + 6, then 7 + 8 and showed just the last one. A similar example can be written using parentheses:

>> (4 + 6) (7 + 8) == 15

Rebol displays only the last expression, yet keeps track of all expressions.

>> do [a: 4 + 6 7 + 8] == 15 >> a == 10

that is the same of: >> do [ a: 4 + 6 7 + 8 ] == 15

To get all results from two or more expressions, we can use a reduce function as follows:

>> reduce [4 + 6 7 + 8] == [10 15]

We obtained a block containing all the collected results.

Another important case when we may need to collect some results may be the evaluation of a function, which expects some arguments. Let's take the add function as an example:

>> add 2 + 3 4 + 6 == 15

Explanation: in this case we asked the interpreter to evaluate the add function. The interpreter had to collect two arguments for the function, so it evaluated two expressions to the right and obtained two results, which could be used as arguments. It's the same of: >> add (2 + 3) (4 + 6) == 15

The above description is valid for functions with more or less arguments, i.e. particularly for functions taking just one argument too:

>> abs -4 + -5 == 9

Here the interpreter needed to evaluate the abs function. Therefore it evaluated the first expression to the right and obtained -9, which it used as the argument for the abs function. It's the same of: >> abs (-4 + -5) == 9 So use parentheses to avoid mistakes...

Because of the way how the interpreter collects the arguments for functions, it looks as if the operator expression to the right took precedence over the function evaluation.

It is easy to explain, why this is not the case when the function uses unevaluated (resp. fetched) arguments: in that case the interpreter doesn't need to evaluate an expression to obtain the value of the argument.

Simple programming in the console
The console is your primary location for writing small segments of code to rapidly test out your ideas and functions. Nothing needs to be compiled and expressions are evaluated as soon as you press Enter. This allows for interactive programming at the console, and aids in debugging large programs. The lack of a compilation phase allows for rapid prototyping and testing.

We saw a math example earlier, but now let's try something more complex:

>> join "Hi" "There" == "HiThere"

The join function combines two strings and returns a new string: "HiThere".

Now let's reverse all the characters in that string by inserting reverse in front of join:

>> reverse join "Hi" "There" == "erehTiH"

We can reverse it again:

>> reverse reverse join "Hi" "There" == "HiThere"

Now you are observing basically how the Rebol language works:

''You can manipulate returned values directly as they are output to the left of a function. Values are streaming from the right to the left in your program and you can manipulate them along the way.''

This is a very important observation! It's possible to perform such manipulations indefinitely. This is basically how to build programs with Rebol.

>> reverse print join "Hi" "There" HiThere ** Script Error: reverse expected value argument of type: series tuple pair ** Near: reverse print join "Hi" "There"

What happens is that the print function doesn't return a value that the last reverse function can use. That is why you'll see on the console both the output of print and the error output of reverse.

Another exception to this rule are binary operators. They usually consume an argument on each side.

The outer box is only for illustrative purposes, but this is how you should see the operation.

Essentially:

 * Functions return values : You can use other operators or functions to their left.
 * Operators return values : Similar to functions, but consume (usually) arguments on both sides. You can use functions to the left or other operators (usually to the right) of operator expressions to consume their output.

An example mixing functions and operators:

The equivalent code is:

>> print divide 2 + 2 8 0.5

An example where operator * uses the output of operator +:

>> 2 + 3 * 4 == 20

Remembering values: variables
As has been stated above, Rebol words can be used as symbols. In addition to that, we can have words "working" as variables, i.e. referring to other Rebol values.

Let's try that by building a multi-line book-keeping program. We want to use a variable called wallet.

At first, let's see what happens when we enter that in the console:

>> wallet ** Script Error: wallet has no value ** Near: wallet

This happened, because the word wasn't assigned a value. We need to assign a value to it:

>> wallet: $25

In my wallet is 25 dollars. I can return this value simply by typing:

>> wallet == $25.00

Now I want to add 5 dollars:

>> wallet: wallet + $5 == $30.00

Another way to do that is to write:

>> wallet: add wallet 5 == $35.00

It can get tedious to write this all the time, so we want to create a function to handle the task of adding money to our wallet. A function is simply a piece of program code that is executed, every time you type in a specific word. A simple function is created like this:

>> earn: does [wallet: add wallet $5]

It's the same code as shown above, but enclosed in square brackets called a block, fed to the does function, which means create a function doing this code block everytime it is evaluated. It needs to be stored, and that happens the same way as storing numbers. We assign the new function to the word earn.

This is one of the great strengths of Rebol, namely that storing values and functions work the same way! We are still following our right-to-left rule.

This opens up some very clever possibilities, which we'll explore in later chapters.

Our earn function has been created. So every time you type:

>> earn $40.00 >> earn $45.00

It's a lot easier to type, right? But what if you want to earn a different amount each time? Like we saw earlier with reverse and join, those functions take one or more arguments. Therefore we'll need to use func instead of does.

>> earn: func [amount] [wallet: add wallet amount]

Note that another block is used before our program code. This is where we store function arguments, also known as an argument list. The number 5 has been replaced in the code by amount, which is a variable from the argument list. You can take as many arguments as you want from the argument list and use them as many times as you want in your function code.

We can equally create a spend function:

>> spend: func [amount] [wallet: subtract wallet amount]

Now you can use them just like any other function:

>> earn $10 == $45.00 >> spend $25 == $20.00

Did you notice that we actually used a real $ sign in the return value for earn and spend? Using it, Rebol recognizes the number as a money amount!

Why Rebol does assignment like that
You might now be asking, why does Rebol use the above syntax for variable assignment? After all, most languages use an equal sign like this:

number = 10

Why does Rebol write it this way:

number: 10

It turns out Rebol does not do it just to be different, it is an important part of the language.

As we hinted early, under the hood, Rebol is an advanced language. It's a step beyond most other languages because Rebol integrates the concepts of code, data, and metadata (data that describes other data) into a single language. (We will talk about that later when we cover "dialecting".)

But for now, think of it this way. When you write:

number = 10

You are stating:

variable assignment-operator value

But, when you write:

number: 10

You are stating:

variable-defined-as value

This fact allows Rebol's variable definitions to stand out as special datatypes of the language. The definition is unique and is not dependent on the meaning of an operator (the = sign). This is a powerful concept that is useful when you are dealing with advanced code-as-data and metadata.

If you still have trouble relating to this notation, think of it this way: what is more common in written human languages? In fact, if you look at an email header or an http header, how are value fields expressed? The Rebol way. Why is that?

Multi-line blocks
The console allows you to work with multiple lines of code for a single expression. If you begin a block with [ and press Enter, the console will not cease to accept input, until you give the corresponding ].

To let you know the console is now accepting multi-line input, the prompt changes from >> to the delimiter you are currently using, e.g. [, and it will stay that way, until the ] comes.

>> todays-earnings: [ [   $25.00 [    $30.00 [    $14.00 [    $10.00 [    ]

Multi-line strings are also possible, but note that multiline strings use the { } instead of " ".

>> very-long-string: { {   This string {   contains many {   lines. {   }

Pasting code in the console
Sometimes, you might want to try code examples in the console to try out a function. Simply copy it from your source and paste it (in Windows with Ctrl+C and Ctrl+V).

Literal series
The most common mistake made by all those learning Rebol is in dealing with literal series within a function.

For example, here is a function that prints out a "Dear " given a name as an argument.

dear: func [ name [string!] /local salute ][    salute: "Dear " print append salute name ]

When the function is first called, the result is as expected >> dear "John" Dear John

However, when run again, the result is unexpected

>> dear "Jane" Dear JohnJane

This happens because the salute variable is initialised to the literal string "Dear ", which is kept in the body of the function, and becomes a subject to change. The append function alters that string by adding the actual argument string to it.

You can verify this by examining the dear function before it is first evaluated:

probe :dear

which results in

func [ name [string!] /local salute ] [    salute: "Dear " print append salute name ]

And then when you examine it after it has been evaluated with the argument "John"

func [ name [string!] /local salute ] [    salute: "Dear John" print append salute name ]

It is now evident that the string has been altered to "Dear John".

To ensure that the salute variable is correctly initialised each time, we need to keep the string "Dear " in the function body unaltered. To protect the string in the function body we can assign just a copy of it to the salute variable as follows:

Dear: func [ name [string!] /local salute ] [    salute: copy "Dear " print append salute name ]

This guarantees, that the changes made to the salute string cannot alter the original string in the function body.

The same pitfall occurs when using a block >> test: func [l [integer!]] [b: [] repeat x l [append b x]] >> test 2 == [1 2] >> test 3 == [1 2 1 2 3] To make sure that the test function does not alter the block it contains, we can use b: copy [] in the body of the test function in this case.

Precedence
Rebol evaluates left to right, but infix operators take precedence over functions upsetting the normal flow of evaluation.

A common error occurs when comparing values

if length? series < 10 [print "less then 10"] ** Script Error: length? expected series argument of type: series port tuple bitset struct ** Near: if length? series < 10

Here the infix operator < takes precedence over the length? function. The result which is a boolean value is then passed to the function length? which is in fact expecting a series argument instead of a boolean.

To circumvent this, the expression can be rewritten as

if (length? series) < 10 [print "less than 10"]

or as

if 10 > length? series [print "less than 10"]

In the latter version, the infix operator takes precedence, and evaluates 10 and then length?. Since length? requires one argument, it consumes series and returns the value to > to give the correct evaluation.

Missing arguments
Another common mistake, made by both beginners and experts, is to forget to provide an argument to a function.

In the example below, we forget to provide the last argument to the append function:

>> append "example" ** Script Error: append is missing its value argument ** Near: append "example"

What does the error mean by "value" argument? Use help to find out:

>> help append USAGE: APPEND series value /only DESCRIPTION: Appends a value to the tail of a series and returns the series head. APPEND is a function value. ARGUMENTS: series -- (Type: series port) value -- (Type: any) REFINEMENTS: /only -- Appends a block value as a block

Here you can see that "value" is the second argument. That's what is missing.

Extra arguments
Another common argument mistake is to provide too many arguments. This type of mistake is more subtle, because you won't get an error message.

Here is an example. Let's suppose you have the expression:

if num > 10 [print "greater"]

But, then you decide you want to print "not greater" for the else case. You might be tempted to write:

if num > 10 [print "greater"] [print "not greater"]

This is an error, but when you try it, you won't get an error message. The second block will be ignored. That's because the if function only takes one block. If you want both blocks, you should use the either function as shown here:

either num > 10 [print "greater"] [print "not greater"]

Keep an eye out for these kinds of errors in your code.

Note: There is a very good reason why Rebol allows these "extra" values without producing an error. It is actually one of the special features of Rebol. Consider the reduce function that was mentioned above. Allowing multiple expressions to follow each other allows you to create special data results that can be very useful. This is an advanced topic, but take a look at the example below to get an idea of its importance in Rebol:

>> reduce [if num > 10 [123] ["example" 456]] == [123 ["example" 456]]

Wrong type of arguments
There is also the situation that occurs if you do not provide the proper type of argument to a function. In some specific cases, the error message might be a bit confusing.

Modifying the if example above, what if you wrote:

if num > 10 print "greater"

You would get this error:

** Script Error: if expected then-block argument of type: block ** Near: if num > 10 print

That happened because you did not provide the correct type of argument to the function. What you meant to write was:

if num > 10 [print "greater"]

Again, if you wonder what Rebol means by "then-block", use the help function:

>> help if USAGE: IF condition then-block /else else-block DESCRIPTION: If condition is TRUE, evaluates the block. IF is a native value. ARGUMENTS: condition -- (Type: any) then-block -- (Type: block) REFINEMENTS: /else -- If not true, evaluate this block else-block -- (Type: block)

Copy vs copy/deep
Given the following series Perform copy Now b contains words a, b, c and its fourth element is the same as the fourth element of a. This can be seen by appending to a/4 and checking b again On copy/deep, c/4 becomes a separate copy of a/4, so the subblocks a/4 and c/4 are not identical. c/4 does not have h but b/4 does. Neither b nor c will contain i as it is in the outer series

Code readability
Even in the console, you can produce quite long sequences of functions and variables. If you put it all in one line, it can be hard to read, especially since Rebol makes it unnecessary to using parantheses for evaluation:

print multiply add 4 add 6 5 divide 1 square-root 3

The trained eye may know where to start, but such a mixture of using functions inside arguments can quickly become hard to read.

One method is to split the code into multiple lines. With Rebol you are completely free to do that:

print multiply add 4 add 6 5 divide 1      square-root 3

This helps to understand what's going on.

print (4 + 6 + 5) * (1 / square-root 3)

Is an easier equivalent for the same expression.

External references

 * Is Rebol a pure functional language?

title: Rebol Programming/Programming in Rebol


text:
Rebol Programming/Language Features/Parse

PARSE is one of the most powerful features in Rebol. It has many capabilities from simple string splitting to parse expression matching. PARSE forms the basis of pattern matching in Rebol; in other languages pattern matching is often implemented as regular expression matching.

If you are asking yourself why Rebol has no regular expression matching implementation, PARSE is the answer.

A skeleton of a parsing operation:

parse INPUT RULE

Table of contents

 * Simple splitting
 * Splitting using specific delimiters
 * Parse expressions
 * Parsing examples


text:
ACT Study Guide/Overview

The ACT (American College Test) is a standardized college entrance exam taken by many United States high school students in their 11th or 12th year of standard schooling. Although the United States is not the only place to take the ACT, it is the main country in which students take the test. The highest score possible is a 36. The subsections have a high score of 18. You are also shown your percentile rank. Students decide what colleges they want to have their scores sent to. The colleges then look at the test scores and use them as one of many factors for admission. Another major college entrance exam in the US is the SAT. If you wish to prepare for the SAT you can read the SAT Study Guide.

The ACT has four main sections. These sections are English, Math, Reading, and Science. Below you can find the amount of time give, the number of questions, and the subscore categories.

The information below is taken from Getting Into the ACT copyright 1990 and 1997 by ACT, and from the 2004/2005 student score report.

English

 * Time
 * 45 Minutes

 * Questions
 * 75

 * Subscores
 * Usage and Mechanics (40 Questions)
 * Rhetorical Skills (35 Questions)

Math

 * Time
 * 60 Minutes

 * Questions
 * 60

 * Subscores
 * Pre-Algebra (14 Questions)/Elementary Algebra (10 Questions)
 * Intermediate Algebra (9 Questions)/Coordinate Geometry (9 Questions)
 * Plane Geometry (14 Questions)/Trigonometry (4 Questions)

Reading

 * Time
 * 35 Minutes

 * Questions
 * 40

 * Subscores
 * Arts/Literature (20 Questions)
 * Social Studies/Sciences (20 Questions)

Science

 * Time
 * 35 Minutes

 * Questions
 * 40

 * Subscores
 * None

 * Question Content
 * Data Representation (15 Questions)
 * Research Summaries (18 Questions)
 * Conflicting Viewpoints (7 Questions)

title: ACT Study Guide/Overview


text:
Visual Basic/Compiler Directives

=Introduction= Compiler directives are instructions that are executed by the compiler at compile time rather than by the program at run time.

title: Visual Basic/Compiler Directives


text:
Consciousness Studies/Measurement In Quantum Physics And The Preferred Basis Problem

The Measurement Problem
In quantum physics the probability of an event is deduced by taking the square of the amplitude for an event to happen. The term "amplitude for an event" arises because of the way that the Schrödinger equation is derived using the mathematics of ordinary, classical waves where the amplitude over a small area is related to the number of photons hitting the area. In the case of light, the probability of a photon hitting that area will be related to the ratio of the number of photons hitting the area divided by the total number of photons released. The number of photons hitting an area per second is the intensity or amplitude of the light on the area, hence the probability of finding a photon is related to "amplitude".

However, the Schrödinger equation is not a classical wave equation. It does not determine events, it simply tells us the probability of an event. In fact the Schrödinger equation in itself does not tell us that an event occurs at all, it is only when a measurement is made that an event occurs. The measurement is said to cause state vector reduction. This role of measurement in quantum theory is known as the measurement problem. The measurement problem asks how a definite event can arise out of a theory that only predicts a continuous probability for events.

Two broad classes of theory have been advanced to explain the measurement problem. In the first it is proposed that observation produces a sudden change in the quantum system so that a particle becomes localised or has a definite momentum. This type of explanation is known as collapse of the wavefunction. In the second it is proposed that the probabilistic Schrödinger equation is always correct and that, for some reason, the observer only observes one particular outcome for an event. This type of explanation is known as the relative state interpretation. In the past thirty years relative state interpretations, especially Everett's relative state interpretation have become favoured amongst quantum physicists.

The quantum probability problem
The measurement problem is particularly problematical when a single particle is considered. Quantum theory differs from classical theory because it is found that a single photon seems to be able to interfere with itself. If there are many photons then probabilities can be expressed in terms of the ratio of the number hitting a particular place to the total number released but if there is only one photon then this does not make sense. When only one photon is released from a light source quantum theory still gives us a probability for a photon to hit a particular area but what does this mean at any instant if there is indeed only one photon?

If the Everettian interpretation of quantum mechanics is invoked then it might seem that the probability of the photon hitting an area in your particular universe is related to the occurrences of the photon in all the other universes. But in the Everrettian interpretation even the improbable universes occur. This leads to a problem known as the quantum probability problem:

If the universe splits after a measurement, with every possible measurement outcome realised in some branch, then how can it make sense to talk about the probabilities of each outcome? Each outcome occurs.

This means that if our phenomenal consciousness is a set of events then there would be endless copies of these sets of events, almost all of which are almost entirely improbable to an observer outside the brain but all of which exist according to an Everrettian Interpretation. Which set is you? Why should 'you' conform to what happens in the environment around you?

The preferred basis problem
It could be held that you assess probabilities in terms of the branch of the universe in which you find yourself but then why do you find yourself in a particular branch? Decoherence Theory is one approach to these questions. In decoherence theory the environment is a complex form that can only interact with particles in particular ways. As a result quantum phenomena are rapidly smoothed out in a series of micro-measurements so that the macro-scale universe appears quasi-classical. The form of the environment is known as the preferred basis for quantum decoherence. This then leads to the preferred basis problem in which it is asked how the environment occurs or whether the state of the environment depends on any other system.

According to most forms of decoherence theory 'you' are a part of the environment and hence determined by the preferred basis. From the viewpoint of phenomenal consciousness this does not seem unreasonable because it has always been understood that the conscious observer does not observe things as quantum superpositions. The conscious observation is a classical observation.

However, the arguments that are used to derive this idea of the classical, conscious observer contain dubious assumptions that may be hindering the progress of quantum physics. The assumption that the conscious observer is simply an information system is particularly dubious:

"Here we are using aware in a down - to - earth sense: Quite simply, observers know what they know. Their information processing machinery (that must underlie higher functions of the mind such as "consciousness") can readily consult the content of their memory. (Zurek 2003).

This assumption is the same as assuming that the conscious observer is a set of measurements rather than an observation. It makes the rest of Zurek's argument about decoherence and the observer into a tautology - given that observations are measurements then observations will be like measurements. However, conscious observation is not simply a change of state in a neuron, a "measurement", it is the entire manifold of conscious experience.

In his 2003 review of this topic Zurek makes clear an important feature of information theory when he states that:

There is no information without representation.

So the contents of conscious observation are states that correspond to states of the environment in the brain (i.e.: measurements). But how do these states in the brain arise? The issue that arises here is whether the representation, the contents of consciousness, is entirely due to the environment or due to some degree to the form of conscious observation. Suppose we make the reasonable assumption that conscious observation is due to some physical field in the dendrites of neurons rather than in the action potentials that transmit the state of the neurons from place to place. This field would not necessarily be constrained by decoherence; there are many possibilities for the field, for instance, it could be a radio frequency field due to impulses or some other electromagnetic field (cf: Anglin & Zurek (1996)) or some quantum state of macromolecules etc.. Such a field might contain many superposed possibilities for the state of the underlying neurons and although these would not affect sensations, they could affect the firing patterns of neurons and create actions in the world that are not determined by the environmental "preferred basis".

Zeh (2000) provides a mature review of the problem of conscious observation. For example he realises that memory is not the same as consciousness:

"The genuine carriers of consciousness ... must not in general be expected to represent memory states, as there do not seem to be permanent contents of consciousness."

and notes of memory states that they must enter some other system to become part of observation:

"To most of these states, however, the true physical carrier of consciousness somewhere in the brain may still represent an external observer system, with whom they have to interact in order to be perceived. Regardless of whether the ultimate observer systems are quasi-classical or possess essential quantum aspects, consciousness can only be related to factor states (of systems assumed to be localized in the brain) that appear in branches (robust components) of the global wave function — provided the Schrodinger equation is exact. Environmental decoherence represents entanglement (but not any “distortion” — of the brain, in this case), while ensembles of wave functions, representing various potential (unpredictable) outcomes, would require a dynamical collapse (that has never been observed)."

However, Zeh (2003) points out that events may be irreversibly determined by decoherence before information from them reaches the observer. This might give rise to a multiple worlds and multiple minds mixture for the universe, the multiple minds being superposed states of the part of the world that is the mind. Such an interpretation would be consistent with the apparently epiphenomenal nature of mind. A mind that interacts only weakly with the consensus physical world, perhaps only approving or rejecting passing actions would be an ideal candidate for a QM multiple minds hypothesis.

Further reading and references

 * Anglin, J.R. & Zurek, J.H. (1996). Decoherence of quantum fields: decoherence and predictability. Phys.Rev. D53 (1996) 7327-7335 http://arxiv.org/PS_cache/quant-ph/pdf/9510/9510021.pdf
 * Baker, D.J. (2004). Lingering Problems with Probability in Everettian Quantum Mechanics http://www.princeton.edu/~hhalvors/teaching/phi538_f2004/LingeringProbsEverett.pdf
 * Lockwood, M. (1996) Many Minds Interpretations of quantum mechanics. The British Journal of the Philosophy of Science. 47: 2 (159-188). http://www.ibiblio.org/weidai/Many_Minds.pdf
 * Pearl, P. (1997). True collapse and false collapse. Published in Quantum Classical Correspondence: Proceedings of the 4th Drexel Symposium on Quantum Nonintegrability, Philadelphia, PA, USA, September 8–11, 1994, pp. 51–68. Edited by Da Hsuan Feng and Bei Lok Hu. Cambridge, MA: International Press, 1997. http://arxiv.org/PS_cache/quant-ph/pdf/9805/9805049.pdf
 * Squires, E.J. (1996). What are quantum theorists doing at a conference on consciousness? http://arxiv.org/PS_cache/quant-ph/pdf/9602/9602006.pdf
 * Zeh, H. D. (1979). Quantum Theory and Time Asymmetry. Foundations of Physics, Vol 9, pp 803–818 (1979).
 * Zeh, H.D. (2000) THE PROBLEM OF CONSCIOUS OBSERVATION IN QUANTUM MECHANICAL DESCRIPTION. Epistemological Letters of the Ferdinand-Gonseth Association in Biel (Switzerland) Letter No 63.0.1981, updated 2000. http://arxiv.org/abs/quant-ph/9908084
 * Zeh, H.D. (2003). Decoherence and the Appearance of a Classical World in Quantum Theory, second edition, Authors:. E. Joos, H.D. Zeh, C. Kiefer D. Giulini, J. Kupsch, and I.-O. Stamatescu. Chapter 2: Basic Concepts and their Interpretation. http://www.rzuser.uni-heidelberg.de/~as3/index.html
 * Zurek, W.H. (2003). Decoherence, einselection and the quantum origins of the classical. Rev. Mod. Phys. 75, 715 (2003) http://arxiv.org/abs/quant-ph/0105127


text:
ACT Study Guide/English

For the English section, you are given 45 minutes to read five selections and then answer a total of 75 multiple-choice questions about them. This gives you an average of nine minutes per passage and 15 questions. These questions are broken down into two subcategories. The first subcategory usage and mechanics. This covers punctuation, grammar, etc. The second subcategory is rhetorical skills, which covers the areas of sentence order, style, etc. There are 40 usage and mechanics questions and 35 rhetorical skills questions. Spelling and vocabulary are not tested directly, but there are some questions that ask you to figure words out by the context. Obviously, these questions are a lot easier if you already know the word ahead of time, but you don't have to. After you read the passage, you can go back and re-read it as you answer the questions.

One tip that deals specifically with the English section is that after you choose your answer, read through the sentence or paragraph with your answer choice and see if it sounds good. If it does, you know you've made the right choice.

Usage and Mechanics
These questions always refer back to an underlined sentence, phrase, or word. Most of the u/m questions that you see will have an answer choice of NO CHANGE. If you pick that answer, it means that you think the sentence or phrase is fine as written. You will also be given three other choices.

Commas
Commas are used:

To separate items in a series If all of the items are separated by conjunctions, then no commas are used
 * I bought bananas, oranges, and apples.
 * I bought bananas and oranges and apples.

To set off appositives If the appositive is a one-word familial relationship, no comma is used.
 * I asked the coach, Alan Freeman, if I could miss practice because of my hurt knee.
 * My cousin Bob is in the Army.

To separate words used as a direct address
 * Albert, bring me that bucket.

To set off parenthetical expressions
 * By the way, I don't think he should have done it.

To separate two numbers
 * After day 26, 75 people were still missing.

To separate out-of-place modifiers
 * The players, exhausted and sore, piled onto the bus.

To separate titles or degrees from the rest of the sentence No commas is used between the name and a roman numeral showing generations
 * Harold Whitman, J.D., is the new law professor.
 * Henry VIII had a total of six wives.

Wherever needed to keep you from misreading the sentence
 * Below, the water shined.

Apostrophes
Apostrophes are used:

To form the singular possessive, add an apostrophe and then an s.
 * Mother's dress
 * The mouse's cheese

To form the plural possessive, add an apostrophe if the plural ends in an s. If the plural does not end in an s, add and apostrophe and then an s.
 * The mothers' dresses
 * The mice's cheese collection

If the possessive is hard to pronounce when written correctly, you can drop the s and just leave the apostrophe, unless the singular is just one syllable. Then you have to keep the s.
 * In Jesus' name we pray... (Loberger 174)

To omit parts of a date
 * The war ended in '45.

To form contractions
 * Don't
 * Haven't

To form plurals of numbers, letters, and words that are used as nouns
 * I got six 100's on my tests.
 * I put six m's where there should have been n's.

To indicate worth or work
 * A penny's worth
 * A hard day's work

Colons
Colons are used:

Before lists introduced by the following or any other phrase used to demonstrate what is
 * You are accused of the following: stealing, bribery, and robbery.
 * Of the sisters, I knew four: Bertha, Roberta, Andrea, and Joyce.

Before a long statement
 * To the jury, the lawyer said: "The last four things I want to share with you..."

Before a second clause explaining or restating the first clause

Verbs are not to be used:
 * After a form of to be or a linking verb
 * After a preposition

Hyphens
Hyphens are used:

For words joined as a modifier A hyphen should not be used for a verb phrase modifying a noun
 * The sixty-third runner
 * The out-of-date records
 * The quickly disappearing land

Fractions used as a modifier
 * Six-tenths of the nation

Numbers from 21-99 (Excluding multiples of ten)
 * Thirty-one

Anywhere when needed to prevent misreading
 * The re-creation vs. the recreation

Semicolons
Semicolons are used:

To separate main clauses not joined by and, or, for, nor, but, so, or yet (Loberger 165)
 * I have reason to believe that you cheated; nevertheless, I must let you go because I don't have evidence to corroborate my argument.

To separate main clauses that are joined by and, or, for, nor, but, so, or yet, but have a comma in one or both of the main clauses
 * I, Mr. Jones, own a Porsche; and I also own a Ferrari.

To separate items in a list when one or more of the items have commas in them

Parentheses
Parentheses are used:

With question marks to show historical uncertainty
 * Harriet Tubman lived from 1820(?) to 1913.

Around parenthetical remarks
 * The painting (which I thought was ugly) was in a plastic case.

Around numbers after the number is spelled out
 * There are three-hundred sixty-five (365) days in a year.

Question Marks
Question marks are used:

To show historical uncertainty After each part in a series of incomplete questions
 * Harriet Tubman lived from 1820(?) to 1913.
 * Did you travel by boat? By car? By plane?

Subject-Verb Agreement

 * Incorrect: He run the race.
 * Correct: He ran the race.

Pronouns
Singular pronouns should replace singular nouns. Each, every, someone, and many are all commonly confused. They are all singular and should be used with singular nouns
 * Incorrect: Each person took their share.
 * Correct: Each person took his share.

Some pronouns are also commonly replaced by other words that are not pronouns.
 * Their vs. There
 * Who's vs. Whose

Sometimes the object pronoun is used and the subject pronoun and vice versa. The first example sounds more sophisticated, but it uses I (subject form) as the object of a preposition.
 * Incorrect: The present was for Carol and I.
 * Correct: The present was for Carol and me.

Dangling Modifiers
e.g. Snuggled in the basement with my family, the hurricane was stronger than ever. This makes it sound like the hurricane is in the basement with your family. Instead, you could rewrite it as "I was snuggled in the basement with my family. The hurricane outside was stronger than ever."

Run-On Sentences

 * Incorrect: I had a lot of fun I hope you did too.
 * Correct: I had a lot of fun. I hope you did too.

Fragments
Phrases need to have verbs to be a sentence.

Commonly Confused Words and Contractions

 * its and it's
 * who's and whose
 * their, there, and they're

Rhetorical Skills
This covers the less rule-bound areas of writing and includes strategy, organization, and style.

Strategy
This includes:
 * Topic Sentences
 * Paragraph Transition
 * Adding Information

Organization
This includes:
 * Order
 * How the Passage Fits Together

Style
This includes:
 * Word Choice
 * Getting Rid of Unnecessary Words
 * How You Phrase Things

title: ACT Study Guide/English


text:
ACT Study Guide/Bibliography

 * Getting Into the ACT
 * Webster's New World English Grammar Handbook
 * http://www.civilwarhome.com/tubmanbio.htm

title: ACT Study Guide/Bibliography


text:
User:Suchenwi

Richard Suchenwirth (legal name: Richard Georg Hermann Suchenwirth-Bauersachs geb. Suchenwirth), German software developer, working at Siemens L&A PA, Constance. Contact: richard.suchenwirth-bauersachs at siemens dot com, or suchenwi at aol dot com.

For many years I have written pages about the Tcl programming language in the Tclers' Wiki http://wiki.tcl.tk/RS, and more than once I have been asked to make a book from them. I never managed, until I found WikiBooks. Maybe here it will come to life - and be free for all, as the original pages were, but better structured and less cluttered by crosstalk :)

Wikipedia, and I assume WikiBooks too, has a clearer separation between presentation and discussion, than our Tclers' Wiki has. But I'll continue to write there, whenever I have something interesting to report - and later see to integrate useful content into Programming:Tcl.

title: User:Suchenwi


text:
User:Nickptar~enwikibooks/monobook.css

/* make a few corners round, only supported by moz/firefox/other gecko browsers for now */ -moz-border-radius-topleft: 0.75em; -moz-border-radius-topright: 0.75em; } -moz-border-radius-topleft: 0.75em; -moz-border-radius-bottomleft: 0.75em; } div.pBody { -moz-border-radius-topright: 0.75em; -moz-border-radius-bottomright: 0.75em; } table#toc { -moz-border-radius-topright: 0.75em; -moz-border-radius-bottomright: 0.75em; -moz-border-radius-topleft: 0.75em; -moz-border-radius-bottomleft: 0.75em; }
 * 1) p-cactions ul li, #p-cactions ul li a {
 * 1) content {

.usermessage { background-color: #00ff00; border-color: #009900; }

title: User:Nickptar~enwikibooks/monobook.css


text:
User:Nickptar~enwikibooks/monobook.js

// fix diff overflow expanding page

function cesarb_fixDiffOverflowTableCell(cell) {   var div = document.createElement("div"); div.style.overflow = "auto"; while (cell.firstChild) {       div.appendChild(cell.firstChild); }   cell.appendChild(div); }

function cesarb_fixDiffOverflowTable(table) {   var cells = table.getElementsByTagName("td");

for (var i = 0; i < cells.length; i++) {       var cell = cells[i]; var classes = cell.className.split(" ");

for (var j = 0; j < classes.length; j++) {           if (classes[j] == "diff-context" || classes[j] == "diff-addedline" || classes[j] == "diff-deletedline") {               cesarb_fixDiffOverflowTableCell(cell); break; }       }    } }

function cesarb_fixDiffOverflowLoadListener(evt) {   var tables = document.getElementsByTagName("table");

loop: for (var i = 0; i < tables.length; i++) {       var table = tables[i]; var classes = table.className.split(" ");

for (var j = 0; j < classes.length; j++) {           if (classes[j] == "diff") {               cesarb_fixDiffOverflowTable(table); break loop; }       }    } }

window.addEventListener("load", cesarb_fixDiffOverflowLoadListener, false);

// edit top

function editTopLink { // if this is a preview page, stop if(document.getElementById("wikiPreview") || self.location.pathname.indexOf("title=Special:") !== -1) { return; }

// get the page title var pageTitle = document.title.split(" - ")[0].replace(" ", "_");

// create div and set innerHTML to link var divContainer = document.createElement("div"); divContainer.innerHTML = ' [edit top] ';

// this is a hack so I can refer to the h1 by an id document.getElementsByTagName("h1")[0].id = "f1r5tH34d1ng"; var theH1 = document.getElementById("f1r5tH34d1ng");

// insert divContainer into the DOM before the h1 document.getElementById("content").insertBefore(divContainer, theH1);

}

// setTimeout does not need a string reference to work setTimeout(editTopLink, 0) // this is equivalent of onload

title: User:Nickptar~enwikibooks/monobook.js


text:
User:Nickptar~enwikibooks

See w:User:Nickptar.

title: User:Nickptar~enwikibooks


text:
User talk:Nickptar~enwikibooks

See w:User talk:Nickptar.

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Nickptar. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Nickptar~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:32, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 05:18, 19 April 2015 (UTC)

title: User talk:Nickptar~enwikibooks


text:
Portuguese Grammar/Noun

Noun is a word that names beings, things, places, qualities, actions or states. Portuguese noun inflect for gender and number.

Gender
Portuguese has two genders: masculine and feminine. Gender classification is purely grammatical and it only matters when adding articles or Adjectives.

Besides the animate nouns, there is no strict rule for the gender. It is meaningless to say that, in Portuguese, a chair (cadeira) is feminine or a book (livro) is masculine. Compared to English, however, is a good feature of languages like Portuguse the more specific difference between a male friend (amigo) or a female friend (amiga).

The normal ending are -o for masculine and -a for feminine. This is not a general rule, however; actually, few nouns follow it.

Noun classification
Due to its meaning or formation, the noun can be divided in several groups.

Concrete and abstract nouns
A concrete noun refers to things that have independent existence. They can be real or not real, material or not material.

 * água (water)
 * Brasil (Brazil)
 * círculo (circle)
 * galinha (chicken)
 * João (John)
 * professor (teacher)
 * repolho (cabbage)

A abstract noun refers to qualities, actions or states, independently of the things to which they are related.

 * beleza (beauty)
 * saudade
 * calor (heat)
 * vida (life)
 * encontro (meeting)
 * tamanho (size)
 * condição

Sometimes a noun can be both, depending on the context.

Common, proper, and collective nouns
A noun that refers to a specie is classified as common.

 * arquivo (file)
 * bananeira (banana tree)
 * caixa (box)
 * pessoa (person)
 * vinho (wine)

A noun that refers to an individual being is classified as proper.

 * Carlos (Charles)
 * Lisboa (Lisbon)
 * São Paulo

A noun that refer to a collectivity is classified as collective
 * arquipélago (archipelago) - of islands
 * assembléia (assembly) - of deputies
 * exército (army) - of soldiers

title: Portuguese Grammar/Noun


text:
User:Shane Smith~enwikibooks/languages

this was a worksheet page and is no longer needed

title: User:Shane Smith~enwikibooks/languages


text:
User talk:Suchenwi

A few hints

 * 1) Programming languages are shelved on the Programming languages bookshelf.
 * 2) The "unkown" in  means "The date when the book was last checked is unknown".
 * 3) When you add an entry you should check the book.
 * 4) If you have checked the book you should know the date when you did it.
 * 5) If you know the date you should insert the date and not unknown
 * 6) You would have know all that if you read the instructions which are displayed when you klick on the stage icon.

Thanks for the hints :) As I've just seen, the shelf doesn't have stage indications any more, so I don't have to add one either. And well, who reads all the instructions he encounters, even if they cry README ;^) Suchenwi 16:26, 4 September 2005 (UTC)

 * Help:Development_stages ;-) --Krischik 16:53, 4 September 2005 (UTC)

Thanks for your work
Hey, I was just randomly reading a part of your Tcl wikibook, and I must say, you've done some very good work, so I wanted to say thank you. I know what it's like to labor on something for awhile without any recognition, and how important a simple "thank you" can be. Keep up the good work. --96.241.125.11 (talk) 16:00, 18 September 2008 (UTC)

Thanks - I appreciate feedback indeed :^) Suchenwi (talk) 10:19, 19 September 2008 (UTC)

title: User talk:Suchenwi


text:
Template:Programming languages bookshelf

Programming languages M ULTI P ARADIGM  – Ada Programming – C++ – Common Lisp – Objective-C – Perl – Python – Tcl – Visual Basic – JavaScript — I MPERATIVE  – Bourne Shell Scripting – C|C – Fortran – PHP – Icon – QBasic – ActionScript – Turing — D ECLARATIVE  – Apache Ant - – XForms - — O BJECT O RIENTED  – C# Programming – Delphi Programming – Java Programming – Ruby – Visual Basic .NET – Objective-J — L OGIC  – Prolog — F UNCTIONAL  — Erlang – Haskell — A SSEMBLY L ANGUAGES  – x86 Assembly – MIPS Assembly – SPARC Assembly – 360 Assembly All Programming language books...