text:
Julian Grenfell

Julian Henry Francis Grenfell (30 March 1888 – 26 May 1915) was a British soldier and a war poet of World War I.

Early life
Julian Grenfell was born at 4 St James's Square, London, the eldest son of William Grenfell, later Baron Desborough, and Ethel Priscilla Fane, daughter of Julian Fane.

He was educated at Eton where he was good friends with Denys Finch Hatton, Edward Horner, and latterly with Patrick Shaw-Stewart. From Eton he went up to Balliol College, Oxford, where he soon developed a reputation for bullying and rowdy behaviour, such as cracking a stock whip within inches of Philip Sassoon's head. In his final year at Oxford Grenfell began to struggle with his studies, his moods became unstable, and he was anxious, agitated and miserable. His friends and family found it hard to understand what was wrong, but to modern eyes he was clearly suffering from a recurrent major depressive illness. After consulting with his college and his parents Grenfell opted to take a pass degree, as he was not well enough to continue with his honours course After University Julian spent much of his time involved in outdoor activities; hunting and fishing, and as a somewhat reluctant participant in his mother's high society parties, and country house weekends. It was at one such gathering that Julian met Marjory Manners, daughter of the Duke of Rutland, to whom he became devoted. They corresponded for a lengthy period, and Marjory was one of the first to write to Julian's mother Ettie, after his death to tell of her anguish.

Military service
Grenfell was commissioned in the British Army in 1907 and eventually attached to the 1st (Royal) Dragoons in 1910. He was initially sent out to India, where he enjoyed the big game hunting but found military service tedious and his fellow officers rather dull. He then moved with his regiment to South Africa, which Julian greatly disliked (he described South Africa as a landscape of endless scrubland dotted with tin huts, and no trees). By the summer of 1914 he was writing to his mother seeking her help to get him out of the army and back to Britain, having decided to move to a career in politics. When war broke out in August his regiment returned to the U.K. and were sent to Salisbury Plain for intensive training prior to deployment to the western front. It quickly became clear that the conflict had become bogged down in static trench warfare, with little or no role for the cavalry. Julian's unit became de facto infantry soldiers, and despite all the discomforts and dangers he continued to write upbeat letters to his family and friends. Julian became aware that lives were being regularly lost to German snipers. Using hunting skills he had developed at Panshanger, Julian taught his men how to crawl through no-mans land unseen, "steering by the stars" to attack the German front line trenches, and gain intelligence.

For this, he was awarded a Distinguished Service Order in the 1915 New Year Honours;

"Lieutenant The Honourable Julian Henry Francis Grenfell, 1st (Royal) Dragoons. On the 17th November he succeeded in reaching a point behind the enemy's trenches and making an excellent reconnaissance, furnishing early information of a pending attack by the enemy."

On 13 May 1915 as a captain in the 1st (Royal) Dragoons, Grenfell stood talking with a General Campbell. A shell landed a few yards from them, injuring both men. The general was able to help Julian to the nearest aid post, where he was initially so cheerful that everyone thought he had only a minor wound. When he (presciently) said "I think I shall die" his friends objected, but Julian insisted "you see if I don't". He was taken to a hospital at Wimereux, where his sister Monica was working as a V.A.D. nurse. He initially seemed to be holding his own, but a X-Ray showed he had an extensive skull fracture, and underlying brain injury. He was operated on at once, but on 23 May the doctors found his wound was infected so a second operation was undertaken. After this he was in continuous pain, and began to deteriorate. One of his arms gradually became paralysed, and he became increasingly drowsy. For ten long hot days his mother and father sat by his bedside, while Julian remembered happier times in younger years at Taplow Court with his mother, and recited poetry, particularly his favourite, the ancient Greek tragedy Hippolytus by Euripides. He died from encephalitis on the afternoon of 26 May with his mother, father and sister at his bedside. He was 27 years old and was buried at the Boulogne Eastern Cemetery; his mother covered his grave with oak leaves and wild flowers sent by his younger sister from home. The day after his death, together with news of his death, his most famous poem Into Battle was published for the first time, in The Times.

In a letter from October 1914, Grenfell had written "I adore war. ... It is like a big picnic but without the objectivelessness of a picnic. I have never been more well or more happy. ... It just suits my stolid health and stolid nerves and barbaric disposition. The fighting-excitement vitalizes everything, every sight and action. One loves one's fellow man so much more when one is bent on killing him." This contrasts sharply with the work of later war poets such as Siegfried Sassoon or Wilfred Owen, but it should be remembered that Grenfell was a professional soldier; in any event, many British veterans of the war later rejected the idea that Sassoon and Owen spoke for them. Historian Max Hastings says of Grenfell that he was "idolised by his peers for reasons mystifying to posterity."

His younger brother the Honourable Gerald William (Billy) Grenfell was killed in action on 30 July 1915, within a mile of where Julian had previously been fatally wounded. The death of both Julian and Billy was a dreadful blow to their mother Lady (Ethel) "Ettie" Desborough, who was haunted by bereavement for the rest of her life. Tragically her 3rd remaining son, Ivo, was killed from a head injury sustained in a motor accident, and he died in circumstances very similar to Julian's death.

Commemoration
On 11 November 1985, Grenfell was among 16 Great War poets commemorated on a slate stone unveiled in Westminster Abbey's Poets' Corner. The inscription on the stone was taken from Wilfred Owen's "Preface" to his poems and reads: "My subject is War, and the pity of War. The Poetry is in the pity."

Today Grenfell is most remembered for his poem "Into Battle" written in May 1915, the closing lines read;

"The thundering line of battle stands, And in the air Death moans and sings; But Day shall clasp him with strong hands, And Night shall fold him in soft wings."

title: Julian Grenfell


text:
Charles Sorley

Captain Charles Hamilton Sorley (19 May 1895 – 13 October 1915) was a British Army officer and Scottish war poet who fought in the First World War. He was killed in action during the Battle of Loos in October 1915.

Life and work
Born in Powis House Aberdeen, Scotland, he was the son of philosopher and University Professor William Ritchie Sorley. He was educated at King's College School, Cambridge, and then like Siegfried Sassoon, at Marlborough College (1908–13). At Marlborough College Sorley's favourite pursuit was cross-country running in the rain, a theme evident in many of his pre-war poems, including Rain and The Song of the Ungirt Runners. In keeping with his strict Protestant upbringing, Sorley had strong views on right and wrong, and on two occasions volunteered to be punished for breaking school rules.

Before taking up a scholarship to study at University College, Oxford, Sorley spent a little more than six months in Germany from January to July 1914, three months of which were at Schwerin studying the language and local culture. Then he enrolled at the University of Jena, and studied there up to the outbreak of World War I.

After Germany declared war on Russia, Sorley was detained for an afternoon in Trier, but was released on the same day and told to leave the country. He returned to England and immediately volunteered for military service in the British Army. He joined the Suffolk Regiment as a second lieutenant and was posted to the 7th (Service) Battalion, a Kitchener's Army unit serving as part of the 35th Brigade of the 12th (Eastern) Division. He arrived on the Western Front in Boulogne, France on 30 May 1915 as a lieutenant, and served near Ploegsteert. He was promoted to captain in August 1915.

Sorley was killed in action near Hulluch, having been shot in the head by a sniper during the final offensive of the Battle of Loos on 13 October 1915. Having no known grave at war's end, he is commemorated on the CWGC Loos Memorial.

Sorley's last poem was recovered from his kit after his death, and includes some of his most famous lines:

 * When you see millions of the mouthless dead
 * Across your dreams in pale battalions go

Legacy
Marlborough and Other Poems was published posthumously in January 1916 and immediately became a critical success, with six editions printed that year. His Collected Letters, edited by his parents, were published in 1919.

Robert Graves, a contemporary of Sorley's, described him in his book Goodbye to All That as "one of the three poets of importance killed during the war". (The other two were Isaac Rosenberg and Wilfred Owen.) Sorley may be seen as a forerunner of Sassoon and Owen, and his unsentimental style stands in direct contrast to that of Rupert Brooke.

The last two stanzas of his poem Expectans expectavi were set to music in 1919 by Charles Wood; this anthem for choir and organ quickly established itself in the standard repertoire of Anglican cathedrals and collegiate churches.

Sorley is regarded by some, including the Poet Laureate John Masefield (1878–1967), as the greatest loss of all the poets killed during the war.

On 11 November 1985, Sorley was among 16 Great War poets commemorated on a slate stone unveiled in Westminster Abbey's Poet's Corner. The inscription on the stone was taken from Wilfred Owen's "Preface" to his poems and reads: "My subject is War, and the pity of War. The Poetry is in the pity."

It Is Easy To Be Dead by Neil McPherson, a play on his life, based on his poetry and letters, was presented at the Finborough Theatre, London, and subsequently at Trafalgar Studios, London, in 2016 where it was nominated for an Olivier Award. It subsequently toured to Glasgow and Sorley's birthplace, Aberdeen, in 2018.

On 9 November 2018, an opinion commentary by Aaron Schnoor published in The Wall Street Journal honored the poetry of World War I, including Sorley's poem "When You See Millions of the Mouthless Dead".

Works

 * Marlborough and Other Poems. Cambridge University Press, 1916.
 * Wilson, Jean Moorcroft (Ed). The Collected Poems of Charles Hamilton Sorley. London: Cecil Woolf, 1985. ISBN 0-900821-53-1.
 * Wilson, Jean Moorcroft (Ed). The Collected Letters of Charles Hamilton Sorley. London: Cecil Woolf, 1990.
 * Spear, Hilda D. (Ed). The Poems and Selected Letters of Charles Hamilton Sorley. Dundee: Blackness Press, 1978.
 * Spear, Hilda D. (Ed). The Poems and Selected Letters of Charles Hamilton Sorley. Dundee: Blackness Press, 1978.

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

title: Charles Sorley


text:
James Tyrrell

Sir James Tyrrell (c. 1455 – 6 May 1502) was an English knight, a trusted servant of king Richard III of England. He is known for confessing to the murders of the Princes in the Tower under Richard's orders. William Shakespeare portrays Tyrrell as the man who organises the princes' murder in his 1593 play Richard III.

Family
James Tyrrell was the eldest son of William Tyrrell of Gipping in Suffolk, and Margaret Darcy, the daughter of Robert Darcy of Maldon, and the grandson of Sir John Tyrrell.

Career
Tyrrell's father was beheaded on Tower Hill on 23 February 1462, together with Sir Thomas Tuddenham and John Montgomery. John de Vere, 12th Earl of Oxford, and his eldest son and heir, Aubrey, were beheaded on 26 February and 20 February, respectively, after the discovery of an alleged plot to murder Edward IV. No records of the trials of the alleged conspirators have survived to shed light on what part, if any, Tyrrell's father played in the alleged conspiracy. He was not attainted, and his eldest son and heir's wardship and the custody of his lands were granted to Cecily Neville, Duchess of York, who sold them to William Tyrrell's widow in March 1463 for £50.

James Tyrrell fought on the Yorkist side at the Battle of Tewkesbury on 4 May 1471, and was knighted there by Edward IV. A few months later he entered the service of the future Richard III, then Duke of Gloucester. After Richard III assumed power, he was appointed High Sheriff of Cornwall in 1484. He was in France in 1485, and played no part in the Battle of Bosworth Field which signalled the end of the Yorkists and the start of the Tudor dynasty.

He returned to England in 1486 and was pardoned by King Henry VII on 16 June, and was pardoned again on 16 July. Sir Clements Markham considers that it was between these dates that the murder of the princes took place - although Sir Clements has frequently been criticised for his lack of scholarly rigour and accuracy. Henry VII reappointed him governor of Guînes (in the English possession of Calais) in 1486. Tyrrell had previously been granted the Lieutenancy of Guines on 22 January 1485 by Richard III (vellum document and Great Seal now owned by Richard III Society in UK). However, in 1501, Tyrrell lent his support to Edmund de la Pole, 3rd Duke of Suffolk, now the leading Yorkist claimant to the English throne, who was in voluntary exile. In the spring of 1501 Henry VII sent Thomas Lovell to Guînes to arrest Tyrrell and others, including Tyrrell's son, Thomas.

Tyrrell was charged with treason. Some years after his execution, Sir Thomas More in his "History of King Richard III" wrote that during his examination Tyrrell confessed to the murders of King Edward V of England and his brother Richard of Shrewsbury, Duke of York. According to More, he also implicated John Dighton as a perpetrator, and Dighton when questioned corroborated Tyrrell's account. But he was unable to say where the bodies were, claiming that they had been moved. The original document of Tyrrell's alleged confession was never produced. However, other contemporary accounts, notably that of Polydore Vergil, make no mention of the confession.

Tyrrell was tried and convicted of treason at the Guildhall in London on 2 May 1502 and executed four days later, on 6 May, together with one of his accomplices in aiding Suffolk, Sir John Wyndham. Tyrrell was buried at the church of the Austin Friars, London. He was attainted on 25 January 1504; however the attainder was reversed three years later, on 19 April 1507.

Marriage and issue
In 1469, Tyrrell married Anne Arundel, the daughter of John Arundel of Lanherne, by his first wife, Elizabeth Morley, daughter of Thomas, Lord Morley, by whom he had three sons and a daughter:

 * Sir Thomas Tyrrell (d. 1551) of Gipping, who married firstly Margaret Willoughby, daughter of Christopher Willoughby, 10th Baron Willoughby de Eresby, by whom he had a son, Sir John Tyrrell (d. 1574), who married Elizabeth Munday, the daughter of Sir John Munday (d. 1537), Lord Mayor of London, and a daughter, Anne Tyrrell, who married Sir John Clere of Ormesby.
 * James Tyrrell (d. 1539) of Columbine Hall in Stowupland, who married Anne Hotoft.
 * William Tyrrell.
 * Anne Tyrrell, who married Sir Richard Wentworth (d. 1528) of Nettlestead, by whom she was the mother of Thomas Wentworth, 1st Baron Wentworth.

Further discussion
In a television programme first broadcast on Channel 4 in the UK on 21 March 2015, the historian David Starkey announced his discovery in royal records that both Henry VII and his wife Elizabeth, the sister of Edward V and Richard Duke of York, were present throughout Tyrrell's trial.

However, contemporary documents originally retrieved by scholar Rosemary Horrox record that the king and queen were lodged in the Royal Apartments at the Tower during Tyrrell's trial, which was not held at the Tower itself.

title: James Tyrrell


text:
Edmund de la Pole, 3rd Duke of Suffolk

Edmund de la Pole, 3rd Duke of Suffolk, 6th Earl of Suffolk, KG (c. 1471 – 30 April 1513), Duke of Suffolk, was an English nobleman and soldier. The son of John de la Pole, 2nd Duke of Suffolk and his wife Elizabeth of York, he was through his mother the nephew of the Yorkist kings of England Edward IV and Richard III and the cousin of Edward V and Richard of Shrewsbury, Duke of York (the Princes in the Tower) and of Henry VII's queen Elizabeth of York.

Although the male York line ended with the death of Edward Plantagenet and the Poles at first swore loyalty to the Tudor king of England, they later tried to claim the throne as the Yorkist claimants in the maternal line. Edmund was ultimately executed at the Tower of London.

Yorkist claim
Edmund de la Pole was a son of John de la Pole, 2nd Duke of Suffolk, and Elizabeth of York. His mother was the second surviving daughter of Richard Plantagenet, 3rd Duke of York, and Cecily Neville. She was also a younger sister to King Edward IV and older sister to Richard III.

Service to the Tudors
De la Pole's eldest brother John de la Pole, Earl of Lincoln (c. 1464 – 1487), was the designated heir of their maternal uncle Richard III, who gave him a pension and the reversion of the estates of Lady Margaret Beaufort. Meanwhile, Edmund was made a Knight of the Bath at the coronation of Richard III, and was present at the coronation of his cousin Elizabeth of York in 1487. Following the Battle of Bosworth Field, Lincoln took the oath of allegiance to Elizabeth's husband, Henry VII, instead of claiming the throne for himself. In 1487, Lincoln joined the rebellion of Lambert Simnel and was killed at the Battle of Stoke.

After the death of his older brother, Edmund became the leading Yorkist claimant to the throne, and succeeded to the title Duke of Suffolk in 1492. Edmund took part in the Siege of Boulogne in October 1492. However, he is said to have subsequently agreed with King Henry VII, by Indenture dated 26 February 1492/3, to surrender the dukedom (with, apparently, the marquessate) of Suffolk, and to be known henceforth as the Earl of Suffolk only, this being ratified by Act of Parliament in 1495. In consideration of this surrender and "of the true and diligent service done to his Highness by the said Edmund" the King granted to him, for £5,000, a portion of the lands forfeited by his elder brother John, Earl of Lincoln, in 1487.

Suffolk was one of the leaders against the Cornish rebels at Blackheath, 17 June 1497. However, in Michaelmas term 1498 he was indicted for murder in the King's Bench and, though afterwards pardoned, he fled overseas to Guisnes, July 1499, returning to England after September. He was at this time recorded as stout and bold and of courage. On 5 May 1500 he witnessed at Canterbury the treaty for the marriage of King Henry and Queen Elizabeth's son Prince Arthur with Catherine of Aragon. He then left for France, arriving there on the 13th, and attended the King at his meeting with Archduke Philip at Calais, on 9 June 1500.

Yorkist claimant
In August 1501 he and his brother Richard again left England without royal leave (apparently assisted by James Tyrrell, who was subsequently executed for these actions), and joining Emperor Maximilian I in the Tyrol, he assumed his former title of Duke of Suffolk, being also known as the "White Rose" (Yorkist Pretender). For his alleged projected rebellion he was proclaimed an outlaw at Ipswich, 26 December 1502, and with his brothers William (arrested on suspicion and sent to the Tower, which he never left, early in 1502) and Richard, was attainted in Parliament January 1503/4, whereby all his honours were forfeited, backdated to 1 July 1499. Seward relates that throughout this period until Edmund's death he used a Thomas Killingworth, gentleman of East Anglia and London, as his Steward, for which Killingworth later received a Royal Pardon.

On 28 July 1502 Maximilian signed a treaty at Augsburg whereby, in return for £10,000, he undertook not to help the English rebels. Nevertheless, Suffolk was allowed to remain at Aix, 1502–04, though on leaving he had to leave his brother Richard as hostage for his debts. Upon leaving Aix about April 1504 in an attempt to join the Duke of Saxony in Friesland, he was imprisoned by the Duke of Guelders at Hattem and subsequently by Archduke Philip of Burgundy, at Namur into 1506.

Imprisonment and execution
While sailing to Spain to secure his wife Joanna's inheritance of the Crown of Castile, Philip I of Castile was blown off course to England, and reluctantly and unexpectedly became a guest of Henry VII. Needing to continue his journey, Philip was persuaded by Henry to hand over the Earl of Suffolk in the treaty Malus Intercursus. Henry committed the Earl to the Tower on his arrival in London, late in March 1505/6.

On the accession of Henry VII and Elizabeth's son Henry VIII, Edmund being still in the Tower, was (with his two brothers) excepted from the new king's general pardon of 30 April 1509. After being a prisoner in the Tower for 7 years, he was (since his brother Richard had joined the service of France, with whom England was then at war), without any further proceedings, beheaded on Tower Hill aged about 42.

Montaigne, in his Essays, said that Henry VII, in his will, instructed his son to put Suffolk to death immediately after his own death, and the author criticized the father for requiring that his son do what he himself would not.

Marriage and heirs
Edmund married, before 10 October 1496, Margaret, daughter of Sir Richard Scrope, Knt., second son of Henry Scrope, 4th Baron Scrope of Bolton. Margaret died in 1515. They had a daughter, Elizabeth, who became a nun and died of the Black Plague in the Convent of the Minoresses without Aldgate, London, in 1515.

Edmund's younger brother, Richard de la Pole, declared himself Earl of Suffolk and was the leading Yorkist pretender until his death at the Battle of Pavia on 24 February 1525.

Popular culture
Edmund is portrayed by Nick Barber in the 2019 Starz miniseries The Spanish Princess.

title: Edmund de la Pole, 3rd Duke of Suffolk


text:
User:Palnatoke

My real name (real as in "what my papers say") is Ole Andersen. Before joining wikipedia, I spent some time at Ward's Wiki and Why.

Disclaimer: I teach cultural sector people how to use Wikipedia. Sometimes for money.

Random etc
t: da: sv: no: nn: de: en: commons: af: eo: nl: is: simple: fo: sco:

n: da: sv: no: nn: de: en: commons: af: eo: nl: is: simple: fo: sco:

o: da: sv: no: nn: de: en: commons: af: eo: nl: is: simple: fo: sco:

My CSS: User:Palnatoke/monobook.css, JS: User:Palnatoke/monobook.js

/testbed /testbed2

commons:User:Palnatoke meta:User:Palnatoke af:Gebruiker:Palnatoke da:User:Palnatoke de:Benutzer:Palnatoke eo:Vikipediisto:Palnatoke fo:Brúkari:Palnatoke fr:Utilisateur:Palnatoke is:Notandi:Palnatoke nl:Gebruiker:Palnatoke nn:Brukar:Palnatoke no:Bruker:Palnatoke sco:User:Palnatoke simple:User:Palnatoke sv:Användare:Palnatoke

title: User:Palnatoke


text:
Oncotic pressure

Oncotic pressure, or colloid osmotic-pressure, is a type of osmotic pressure induced by the plasma proteins, notably albumin, in a blood vessel's plasma (or any other body fluid such as blood and lymph) that causes a pull on fluid back into the capillary. Participating colloids displace water molecules, thus creating a relative water molecule deficit with water molecules moving back into the circulatory system within the lower venous pressure end of capillaries.

It has an effect opposing both the hydrostatic blood pressure, which pushes water and small molecules out of the blood into the interstitial spaces at the arterial end of capillaries, and the interstitial colloidal osmotic pressure. These interacting factors determine the partitioning of extracellular water between the blood plasma and the extravascular space.

Oncotic pressure strongly affects the physiological function of the circulatory system. It is suspected to have a major effect on the pressure across the glomerular filter. However, this concept has been strongly criticised and attention has been shifted to the impact of the intravascular glycocalyx layer as the major player.

Etymology
The word 'oncotic' by definition is termed as 'pertaining to swelling', indicating the effect of oncotic imbalance on the swelling of tissues.

The word itself is derived from onco- and -ic; 'onco-' meaning 'pertaining to mass or tumors' and '-ic', which forms an adjective.

Description
Throughout the body, dissolved compounds have an osmotic pressure. Because large plasma proteins cannot easily cross through the capillary walls, their effect on the osmotic pressure of the capillary interiors will, to some extent, balance out the tendency for fluid to leak out of the capillaries. In other words, the oncotic pressure tends to pull fluid into the capillaries. In conditions where plasma proteins are reduced, e.g. from being lost in the urine (proteinuria), there will be a reduction in oncotic pressure and an increase in filtration across the capillary, resulting in excess fluid buildup in the tissues (edema).

The large majority of oncotic pressure in capillaries is generated by the presence of high quantities of albumin, a protein that constitutes approximately 80% of the total oncotic pressure exerted by blood plasma on interstitial fluid. The total oncotic pressure of an average capillary is about 28 mmHg with albumin contributing approximately 22 mmHg of this oncotic pressure, despite only representing 50% of all protein in blood plasma at 35-50 g/L. Because blood proteins cannot escape through capillary endothelium, oncotic pressure of capillary beds tends to draw water into the vessels. It is necessary to understand the oncotic pressure as a balance; because the blood proteins reduce interior permeability, less plasma fluid can exit the vessel.

Oncotic pressure is represented by the symbol Π or π in the Starling equation and elsewhere. The Starling equation in particular describes filtration in volume/s ($$J_\mathrm{v}$$) by relating oncotic pressure ($$\pi_\mathrm{p}$$) to capillary hydrostatic pressure ($$P_\mathrm{c}$$), interstitial fluid hydrostatic pressure ($$P_\mathrm{i}$$), and interstitial fluid oncotic pressure ($$\pi_\mathrm{i}$$), as well as several descriptive coefficients, as shown below:

$$\ J_\mathrm{v} = L_\mathrm{p} S ( [P_\mathrm{c} - P_\mathrm{i}] - \sigma[\pi_\mathrm{p} - \pi_\mathrm{i}] )$$

At the arteriolar end of the capillary, blood pressure starts at about 36 mm Hg and decreases to around 15 mm Hg at the venous end, with oncotic pressure at a stable 25–28 mm Hg. Within the capillary, reabsorption due to this venous pressure difference is estimated to be around 90% that of the filtered fluid, with the extra 10% being returned via lymphatics in order to maintain stable blood volume.

Physiological impact
In tissues, physiological disruption can arise with decreased oncotic pressure, which can be determined using blood tests for protein concentration.

Decreased colloidal osmotic pressure, most notably seen in hypoalbuminemia, can cause edema and decrease in blood volume as fluid is not reabsorbed into the bloodstream. Colloid pressure in these cases can be lost due to a number of different factors, but primarily decreased colloid production or increased loss of colloids through glomerular filtration. This low pressure often correlates with poor surgical outcomes.

In the clinical setting, there are two types of fluids that are used for intravenous drips: crystalloids and colloids. Crystalloids are aqueous solutions of mineral salts or other water-soluble molecules. Colloids contain larger insoluble molecules, such as gelatin. There is some debate concerning the advantages and disadvantages of using biological vs. synthetic colloid solutions. Oncotic pressure values are approximately 290 mOsm per kg of water, which slightly differs from the osmotic pressure of the blood that has values approximating 300 mOsm /L. These colloidal solutions are typically used to remedy low colloid concentration, such as in hypoalbuminemia, but is also suspected to assist in injuries that typically increase fluid loss, such as burns.

title: Oncotic pressure


text:
Generic programming

Generic programming is a style of computer programming in which algorithms are written in terms of data types to-be-specified-later that are then instantiated when needed for specific types provided as parameters. This approach, pioneered by the ML programming language in 1973, permits writing common functions or types that differ only in the set of types on which they operate when used, thus reducing duplicate code.

Generic programming was introduced to the mainstream with Ada in 1977. With templates in C++, generic programming became part of the repertoire of professional library design. The techniques were further improved and parameterized types were introduced in the influential 1994 book Design Patterns.

New techniques were introduced by Andrei Alexandrescu in his 2001 book Modern C++ Design: Generic Programming and Design Patterns Applied. Subsequently, D implemented the same ideas.

Such software entities are known as generics in Ada, C#, Delphi, Eiffel, F#, Java, Nim, Python, Go, Rust, Swift, TypeScript, and Visual Basic .NET. They are known as parametric polymorphism in ML, Scala, Julia, and Haskell. (Haskell terminology also uses the term "generic" for a related but somewhat different concept.)

The term generic programming was originally coined by David Musser and Alexander Stepanov in a more specific sense than the above, to describe a programming paradigm in which fundamental requirements on data types are abstracted from across concrete examples of algorithms and data structures and formalized as concepts, with generic functions implemented in terms of these concepts, typically using language genericity mechanisms as described above.

Stepanov–Musser and other generic programming paradigms
Generic programming is defined in as follows, "Generic programming centers around the idea of abstracting from concrete, efficient algorithms to obtain generic algorithms that can be combined with different data representations to produce a wide variety of useful software."

The "generic programming" paradigm is an approach to software decomposition whereby fundamental requirements on types are abstracted from across concrete examples of algorithms and data structures and formalized as concepts, analogously to the abstraction of algebraic theories in abstract algebra. Early examples of this programming approach were implemented in Scheme and Ada, although the best known example is the Standard Template Library (STL), which developed a theory of iterators that is used to decouple sequence data structures and the algorithms operating on them.

For example, given N sequence data structures, e.g. singly linked list, vector etc., and M algorithms to operate on them, e.g.,   etc., a direct approach would implement each algorithm specifically for each data structure, giving N × M combinations to implement. However, in the generic programming approach, each data structure returns a model of an iterator concept (a simple value type that can be dereferenced to retrieve the current value, or changed to point to another value in the sequence) and each algorithm is instead written generically with arguments of such iterators, e.g. a pair of iterators pointing to the beginning and end of the subsequence or range to process. Thus, only N + M data structure-algorithm combinations need be implemented. Several iterator concepts are specified in the STL, each a refinement of more restrictive concepts e.g. forward iterators only provide movement to the next value in a sequence (e.g. suitable for a singly linked list or a stream of input data), whereas a random-access iterator also provides direct constant-time access to any element of the sequence (e.g. suitable for a vector). An important point is that a data structure will return a model of the most general concept that can be implemented efficiently—computational complexity requirements are explicitly part of the concept definition. This limits the data structures a given algorithm can be applied to and such complexity requirements are a major determinant of data structure choice. Generic programming similarly has been applied in other domains, e.g. graph algorithms.

Although this approach often uses language features of compile-time genericity and templates, it is independent of particular language-technical details. Generic programming pioneer Alexander Stepanov wrote, "Generic programming is about abstracting and classifying algorithms and data structures. It gets its inspiration from Knuth and not from type theory. Its goal is the incremental construction of systematic catalogs of useful, efficient and abstract algorithms and data structures. Such an undertaking is still a dream."

"I believe that iterator theories are as central to Computer Science as theories of rings or Banach spaces are central to Mathematics."

Bjarne Stroustrup noted, "Following Stepanov, we can define generic programming without mentioning language features: Lift algorithms and data structures from concrete examples to their most general and abstract form."

Other programming paradigms that have been described as generic programming include Datatype generic programming as described in "Generic Programming – an Introduction". The approach is a lightweight generic programming approach for Haskell.

In this article we distinguish the high-level programming paradigms of generic programming, above, from the lower-level programming language genericity mechanisms used to implement them (see Programming language support for genericity). For further discussion and comparison of generic programming paradigms, see.

Programming language support for genericity
Genericity facilities have existed in high-level languages since at least the 1970s in languages such as ML, CLU and Ada, and were subsequently adopted by many object-based and object-oriented languages, including BETA, C++, D, Eiffel, Java, and DEC's now defunct Trellis-Owl.

Genericity is implemented and supported differently in various programming languages; the term "generic" has also been used differently in various programming contexts. For example, in Forth the compiler can execute code while compiling and one can create new compiler keywords and new implementations for those words on the fly. It has few words that expose the compiler behaviour and therefore naturally offers genericity capacities that, however, are not referred to as such in most Forth texts. Similarly, dynamically typed languages, especially interpreted ones, usually offer genericity by default as both passing values to functions and value assignment are type-indifferent and such behavior is often used for abstraction or code terseness, however this is not typically labeled genericity as it's a direct consequence of the dynamic typing system employed by the language. The term has been used in functional programming, specifically in Haskell-like languages, which use a structural type system where types are always parametric and the actual code on those types is generic. These uses still serve a similar purpose of code-saving and rendering an abstraction.

Arrays and structs can be viewed as predefined generic types. Every usage of an array or struct type instantiates a new concrete type, or reuses a previous instantiated type. Array element types and struct element types are parameterized types, which are used to instantiate the corresponding generic type. All this is usually built-in in the compiler and the syntax differs from other generic constructs. Some extensible programming languages try to unify built-in and user defined generic types.

A broad survey of genericity mechanisms in programming languages follows. For a specific survey comparing suitability of mechanisms for generic programming, see.

In object-oriented languages
When creating container classes in statically typed languages, it is inconvenient to write specific implementations for each datatype contained, especially if the code for each datatype is virtually identical. For example, in C++, this duplication of code can be circumvented by defining a class template: Above,  is a placeholder for whatever type is specified when the list is created. These "containers-of-type-T", commonly called templates, allow a class to be reused with different datatypes as long as certain contracts such as subtypes and signature are kept. This genericity mechanism should not be confused with inclusion polymorphism, which is the algorithmic usage of exchangeable sub-classes: for instance, a list of objects of type  containing objects of type   and. Templates can also be used for type-independent functions as in the  example below:

The C++  construct used above is widely cited as the genericity construct that popularized the notion among programmers and language designers and supports many generic programming idioms. The D programming language also offers fully generic-capable templates based on the C++ precedent but with a simplified syntax. The Java programming language has provided genericity facilities syntactically based on C++'s since the introduction of Java Platform, Standard Edition (J2SE) 5.0.

C# 2.0, Oxygene 1.5 (formerly Chrome) and Visual Basic .NET 2005 have constructs that exploit the support for generics present in Microsoft .NET Framework since version 2.0.

Generics in Ada
Ada has had generics since it was first designed in 1977–1980. The standard library uses generics to provide many services. Ada 2005 adds a comprehensive generic container library to the standard library, which was inspired by C++'s standard template library.

A generic unit is a package or a subprogram that takes one or more generic formal parameters.

A generic formal parameter is a value, a variable, a constant, a type, a subprogram, or even an instance of another, designated, generic unit. For generic formal types, the syntax distinguishes between discrete, floating-point, fixed-point, access (pointer) types, etc. Some formal parameters can have default values.

To instantiate a generic unit, the programmer passes actual parameters for each formal. The generic instance then behaves just like any other unit. It is possible to instantiate generic units at run-time, for example inside a loop.

Example
The specification of a generic package:

Instantiating the generic package:

Using an instance of a generic package:

Advantages and limits
The language syntax allows precise specification of constraints on generic formal parameters. For example, it is possible to specify that a generic formal type will only accept a modular type as the actual. It is also possible to express constraints between generic formal parameters; for example:

In this example, Array_Type is constrained by both Index_Type and Element_Type. When instantiating the unit, the programmer must pass an actual array type that satisfies these constraints.

The disadvantage of this fine-grained control is a complicated syntax, but, because all generic formal parameters are completely defined in the specification, the compiler can instantiate generics without looking at the body of the generic.

Unlike C++, Ada does not allow specialised generic instances, and requires that all generics be instantiated explicitly. These rules have several consequences:
 * the compiler can implement shared generics: the object code for a generic unit can be shared between all instances (unless the programmer requests inlining of subprograms, of course). As further consequences:
 * there is no possibility of code bloat (code bloat is common in C++ and requires special care, as explained below).
 * it is possible to instantiate generics at run-time, and at compile time, since no new object code is required for a new instance.
 * actual objects corresponding to a generic formal object are always considered to be non-static inside the generic; see Generic formal objects in the Wikibook for details and consequences.
 * all instances of a generic being exactly the same, it is easier to review and understand programs written by others; there are no "special cases" to take into account.
 * all instantiations being explicit, there are no hidden instantiations that might make it difficult to understand the program.
 * Ada does not permit arbitrary computation at compile time, because operations on generic arguments are performed at runtime.

Templates in C++
C++ uses templates to enable generic programming techniques. The C++ Standard Library includes the Standard Template Library or STL that provides a framework of templates for common data structures and algorithms. Templates in C++ may also be used for template metaprogramming, which is a way of pre-evaluating some of the code at compile-time rather than run-time. Using template specialization, C++ Templates are Turing complete.

Technical overview
There are many kinds of templates, the most common being function templates and class templates. A function template is a pattern for creating ordinary functions based upon the parameterizing types supplied when instantiated. For example, the C++ Standard Template Library contains the function template  that creates functions that return either x or y, whichever is larger. could be defined like this:

Specializations of this function template, instantiations with specific types, can be called just like an ordinary function:

The compiler examines the arguments used to call  and determines that this is a call to. It then instantiates a version of the function where the parameterizing type  is , making the equivalent of the following function:

This works whether the arguments  and   are integers, strings, or any other type for which the expression   is sensible, or more specifically, for any type for which   is defined. Common inheritance is not needed for the set of types that can be used, and so it is very similar to duck typing. A program defining a custom data type can use operator overloading to define the meaning of  for that type, thus allowing its use with the   function template. While this may seem a minor benefit in this isolated example, in the context of a comprehensive library like the STL it allows the programmer to get extensive functionality for a new data type, just by defining a few operators for it. Merely defining  allows a type to be used with the standard ,  , and   algorithms or to be put inside data structures such as  s, heaps, and associative arrays.

C++ templates are completely type safe at compile time. As a demonstration, the standard type  does not define the   operator, because there is no strict order on complex numbers. Therefore,  will fail with a compile error, if x and y are   values. Likewise, other templates that rely on  cannot be applied to   data unless a comparison (in the form of a functor or function) is provided. E.g.: A  cannot be used as key for a   unless a comparison is provided. Unfortunately, compilers historically generate somewhat esoteric, long, and unhelpful error messages for this sort of error. Ensuring that a certain object adheres to a method protocol can alleviate this issue. Languages which use  instead of   can also use   values as keys.

Another kind of template, a class template, extends the same concept to classes. A class template specialization is a class. Class templates are often used to make generic containers. For example, the STL has a linked list container. To make a linked list of integers, one writes. A list of strings is denoted. A  has a set of standard functions associated with it, that work for any compatible parameterizing types.

Template specialization
A powerful feature of C++'s templates is template specialization. This allows alternative implementations to be provided based on certain characteristics of the parameterized type that is being instantiated. Template specialization has two purposes: to allow certain forms of optimization, and to reduce code bloat.

For example, consider a  template function. One of the primary activities that such a function does is to swap or exchange the values in two of the container's positions. If the values are large (in terms of the number of bytes it takes to store each of them), then it is often quicker to first build a separate list of pointers to the objects, sort those pointers, and then build the final sorted sequence. If the values are quite small however it is usually fastest to just swap the values in-place as needed. Furthermore, if the parameterized type is already of some pointer-type, then there is no need to build a separate pointer array. Template specialization allows the template creator to write different implementations and to specify the characteristics that the parameterized type(s) must have for each implementation to be used.

Unlike function templates, class templates can be partially specialized. That means that an alternate version of the class template code can be provided when some of the template parameters are known, while leaving other template parameters generic. This can be used, for example, to create a default implementation (the primary specialization) that assumes that copying a parameterizing type is expensive and then create partial specializations for types that are cheap to copy, thus increasing overall efficiency. Clients of such a class template just use specializations of it without needing to know whether the compiler used the primary specialization or some partial specialization in each case. Class templates can also be fully specialized, which means that an alternate implementation can be provided when all of the parameterizing types are known.

Advantages and disadvantages
Some uses of templates, such as the  function, were previously filled by function-like preprocessor macros (a legacy of the C language). For example, here is a possible implementation of such macro:

Macros are expanded (copy pasted) by the preprocessor, before compiling proper; templates are actual real functions. Macros are always expanded inline; templates can also be inline functions when the compiler deems it appropriate.

However, templates are generally considered an improvement over macros for these purposes. Templates are type-safe. Templates avoid some of the common errors found in code that makes heavy use of function-like macros, such as evaluating parameters with side effects twice. Perhaps most importantly, templates were designed to be applicable to much larger problems than macros.

There are four primary drawbacks to the use of templates: supported features, compiler support, poor error messages (usually with pre C++20 SFINAE), and code bloat: The extra instantiations generated by templates can also cause some debuggers to have difficulty working gracefully with templates. For example, setting a debug breakpoint within a template from a source file may either miss setting the breakpoint in the actual instantiation desired or may set a breakpoint in every place the template is instantiated.
 * 1) Templates in C++ lack many features, which makes implementing them and using them in a straightforward way often impossible. Instead programmers have to rely on complicated tricks which leads to bloated, hard to understand and hard to maintain code. Current developments in the C++ standards exacerbate this problem by making heavy use of these tricks and building a lot of new features for templates on them or with them in mind.
 * 2) Many compilers historically had poor support for templates, thus the use of templates could have made code somewhat less portable. Support may also be poor when a C++ compiler is being used with a linker that is not C++-aware, or when attempting to use templates across shared library boundaries.
 * 3) Compilers can produce confusing, long, and sometimes unhelpful error messages when errors are detected in code that uses SFINAE. This can make templates difficult to develop with.
 * 4) Finally, the use of templates requires the compiler to generate a separate instance of the templated class or function for every type parameters used with it. (This is necessary because types in C++ are not all the same size, and the sizes of data fields are important to how classes work.) So the indiscriminate use of templates can lead to code bloat, resulting in excessively large executables. However, judicious use of template specialization and derivation can dramatically reduce such code bloat in some cases:"So, can derivation be used to reduce the problem of code replicated because templates are used? This would involve deriving a template from an ordinary class. This technique proved successful in curbing code bloat in real use. People who do not use a technique like this have found that replicated code can cost megabytes of code space even in moderate size programs."
 * 5) Templated classes or functions may require an explicit specialization of the template class which would require rewriting of an entire class for a specific template parameters used by it.

Also, the implementation source code for the template must be completely available (e.g. included in a header) to the translation unit (source file) using it. Templates, including much of the Standard Library, if not included in header files, cannot be compiled. (This is in contrast to non-templated code, which may be compiled to binary, providing only a declarations header file for code using it.) This may be a disadvantage by exposing the implementing code, which removes some abstractions, and could restrict its use in closed-source projects.

Templates in D
The D language supports templates based in design on C++. Most C++ template idioms work in D without alteration, but D adds some functionality:
 * Template parameters in D are not restricted to just types and primitive values (as it was in C++ before C++20), but also allow arbitrary compile-time values (such as strings and struct literals), and aliases to arbitrary identifiers, including other templates or template instantiations.
 * Template constraints and the  statement provide an alternative to respectively C++'s C++ concepts and.
 * The  expression allows speculative instantiation to verify an object's traits at compile time.
 * The  keyword and the   expression allow type inference for variable declarations and function return values, which in turn allows "Voldemort types" (types that do not have a global name).

Templates in D use a different syntax than in C++: whereas in C++ template parameters are wrapped in angular brackets , D uses an exclamation sign and parentheses:. This avoids the C++ parsing difficulties due to ambiguity with comparison operators. If there is only one parameter, the parentheses can be omitted.

Conventionally, D combines the above features to provide compile-time polymorphism using trait-based generic programming. For example, an input range is defined as any type that satisfies the checks performed by, which is defined as follows:

A function that accepts only input ranges can then use the above template in a template constraint:

Code generation
In addition to template metaprogramming, D also provides several features to enable compile-time code generation:
 * The  expression allows reading a file from disk and using its contents as a string expression.
 * Compile-time reflection allows enumerating and inspecting declarations and their members during compiling.
 * User-defined attributes allow users to attach arbitrary identifiers to declarations, which can then be enumerated using compile-time reflection.
 * Compile-time function execution (CTFE) allows a subset of D (restricted to safe operations) to be interpreted during compiling.
 * String mixins allow evaluating and compiling the contents of a string expression as D code that becomes part of the program.

Combining the above allows generating code based on existing declarations. For example, D serialization frameworks can enumerate a type's members and generate specialized functions for each serialized type to perform serialization and deserialization. User-defined attributes could further indicate serialization rules.

The  expression and compile-time function execution also allow efficiently implementing domain-specific languages. For example, given a function that takes a string containing an HTML template and returns equivalent D source code, it is possible to use it in the following way:

Genericity in Eiffel
Generic classes have been a part of Eiffel since the original method and language design. The foundation publications of Eiffel, use the term genericity to describe creating and using generic classes.

Basic, unconstrained genericity
Generic classes are declared with their class name and a list of one or more formal generic parameters. In the following code, class  has one formal generic parameter

The formal generic parameters are placeholders for arbitrary class names that will be supplied when a declaration of the generic class is made, as shown in the two generic derivations below, where  and   are other class names. and  are considered actual generic parameters as they provide real class names to substitute for   in actual use.

Within the Eiffel type system, although class  is considered a class, it is not considered a type. However, a generic derivation of  such as   is considered a type.

Constrained genericity
For the list class shown above, an actual generic parameter substituting for  can be any other available class. To constrain the set of classes from which valid actual generic parameters can be chosen, a generic constraint can be specified. In the declaration of class  below, the generic constraint dictates that any valid actual generic parameter will be a class that inherits from class. The generic constraint ensures that elements of a  can in fact be sorted.

Generics in Java
Support for the generics, or "containers-of-type-T" was added to the Java programming language in 2004 as part of J2SE 5.0. In Java, generics are only checked at compile time for type correctness. The generic type information is then removed via a process called type erasure, to maintain compatibility with old JVM implementations, making it unavailable at runtime. For example, a  is converted to the raw type. The compiler inserts type casts to convert the elements to the  type when they are retrieved from the list, reducing performance compared to other implementations such as C++ templates.

Genericity in .NET [C#, VB.NET]
Generics were added as part of .NET Framework 2.0 in November 2005, based on a research prototype from Microsoft Research started in 1999. Although similar to generics in Java, .NET generics do not apply type erasure, but implement generics as a first class mechanism in the runtime using reification. This design choice provides additional functionality, such as allowing reflection with preservation of generic types, and alleviating some of the limits of erasure (such as being unable to create generic arrays). This also means that there is no performance hit from runtime casts and normally expensive boxing conversions. When primitive and value types are used as generic arguments, they get specialized implementations, allowing for efficient generic collections and methods. As in C++ and Java, nested generic types such as Dictionary are valid types, however are advised against for member signatures in code analysis design rules.

.NET allows six varieties of generic type constraints using the  keyword including restricting generic types to be value types, to be classes, to have constructors, and to implement interfaces. Below is an example with an interface constraint:

The  method allows operation on arrays, with elements of generic type. The method's type constraint indicates that the method is applicable to any type  that implements the generic   interface. This ensures a compile time error, if the method is called if the type does not support comparison. The interface provides the generic method.

The above method could also be written without generic types, simply using the non-generic  type. However, since arrays are contravariant, the casting would not be type safe, and the compiler would be unable to find certain possible errors that would otherwise be caught when using generic types. In addition, the method would need to access the array items as s instead, and would require casting to compare two elements. (For value types like types such as  this requires a boxing conversion, although this can be worked around using the   class, as is done in the standard collection classes.)

A notable behavior of static members in a generic .NET class is static member instantiation per run-time type (see example below).

Genericity in Delphi
Delphi's Object Pascal dialect acquired generics in the Delphi 2007 release, initially only with the (now discontinued) .NET compiler before being added to the native code in the Delphi 2009 release. The semantics and capabilities of Delphi generics are largely modelled on those had by generics in .NET 2.0, though the implementation is by necessity quite different. Here's a more or less direct translation of the first C# example shown above:

As with C#, methods and whole types can have one or more type parameters. In the example, TArray is a generic type (defined by the language) and MakeAtLeast a generic method. The available constraints are very similar to the available constraints in C#: any value type, any class, a specific class or interface, and a class with a parameterless constructor. Multiple constraints act as an additive union.

Genericity in Free Pascal
Free Pascal implemented generics before Delphi, and with different syntax and semantics. However, since FPC version 2.6.0, the Delphi-style syntax is available when using the {$mode Delphi} language mode. Thus, Free Pascal code supports generics in either style.

Delphi and Free Pascal example:

Genericity in Haskell
The type class mechanism of Haskell supports generic programming. Six of the predefined type classes in Haskell (including, the types that can be compared for equality, and  , the types whose values can be rendered as strings) have the special property of supporting derived instances. This means that a programmer defining a new type can state that this type is to be an instance of one of these special type classes, without providing implementations of the class methods as is usually necessary when declaring class instances. All the necessary methods will be "derived" – that is, constructed automatically – based on the structure of the type. For example, the following declaration of a type of binary trees states that it is to be an instance of the classes  and  :

This results in an equality function and a string representation function  being automatically defined for any type of the form   provided that   itself supports those operations.

The support for derived instances of  and   makes their methods   and   generic in a qualitatively different way from parametrically polymorphic functions: these "functions" (more accurately, type-indexed families of functions) can be applied to values of various types, and although they behave differently for every argument type, little work is needed to add support for a new type. Ralf Hinze (2004) has shown that a similar effect can be achieved for user-defined type classes by certain programming techniques. Other researchers have proposed approaches to this and other kinds of genericity in the context of Haskell and extensions to Haskell (discussed below).

PolyP
PolyP was the first generic programming language extension to Haskell. In PolyP, generic functions are called polytypic. The language introduces a special construct in which such polytypic functions can be defined via structural induction over the structure of the pattern functor of a regular datatype. Regular datatypes in PolyP are a subset of Haskell datatypes. A regular datatype t must be of kind * → *, and if a is the formal type argument in the definition, then all recursive calls to t must have the form t a. These restrictions rule out higher-kinded datatypes and nested datatypes, where the recursive calls are of a different form. The flatten function in PolyP is here provided as an example:

Generic Haskell
Generic Haskell is another extension to Haskell, developed at Utrecht University in the Netherlands. The extensions it provides are: The resulting type-indexed value can be specialized to any type.
 * Type-indexed values are defined as a value indexed over the various Haskell type constructors (unit, primitive types, sums, products, and user-defined type constructors). In addition, we can also specify the behaviour of a type-indexed values for a specific constructor using constructor cases, and reuse one generic definition in another using default cases.
 * Kind-indexed types are types indexed over kinds, defined by giving a case for both * and k → k'. Instances are obtained by applying the kind-indexed type to a kind.
 * Generic definitions can be used by applying them to a type or kind. This is called generic application. The result is a type or value, depending on which sort of generic definition is applied.
 * Generic abstraction enables generic definitions be defined by abstracting a type parameter (of a given kind).
 * Type-indexed types are types that are indexed over the type constructors. These can be used to give types to more involved generic values. The resulting type-indexed types can be specialized to any type.

As an example, the equality function in Generic Haskell:

Clean
Clean offers generic programming based PolyP and the Generic Haskell as supported by the GHC ≥ 6.0. It parametrizes by kind as those but offers overloading.

Other languages
Languages in the ML family support generic programming through parametric polymorphism and generic modules called functors. Both Standard ML and OCaml provide functors, which are similar to class templates and to Ada's generic packages. Scheme syntactic abstractions also have a connection to genericity – these are in fact a superset of C++ templates.

A Verilog module may take one or more parameters, to which their actual values are assigned upon the instantiation of the module. One example is a generic register array where the array width is given via a parameter. Such an array, combined with a generic wire vector, can make a generic buffer or memory module with an arbitrary bit width out of a single module implementation.

VHDL, being derived from Ada, also has generic abilities.

C supports "type-generic expressions" using the keyword:

title: Generic programming


text:
Nigel Tranter

Nigel Tranter OBE (23 November 1909 – 9 January 2000) was a writer of a wide range of books on castles, particularly on themes of architecture and history. He also specialised in deeply researched historical novels that cover centuries of Scottish history.

Early life
Nigel Tranter was born in Glasgow and educated at George Heriot's School in Edinburgh. He trained as an accountant and worked in Scottish National Insurance Company, founded by his uncle. In 1933, he married May Jean Campbell Grieve and had two children, Frances May and Philip. He joined the Royal Artillery and served in East Anglia in the Second World War.

Writings
From childhood onwards, Tranter took a great interest in castles and their associated history. As a result, in 1935, at age 25, he published his first book, The Fortalices and Early Mansions of Southern Scotland. Encouraged by his wife, he wrote his first novel, In Our Arms Our Fortune, which was rejected by the publishers. However, Trespass soon followed and was accepted by The Moray Press. Unfortunately, they went bankrupt soon after its publication in 1937, and he didn't receive any payment. Over the next few years, he wrote several more novels in the same vein: light-hearted romantic adventures in varied settings from modern-day Europe to historical Scotland. Tranter also wrote several westerns under the pseudonym Nye Tredgold to provide additional income for his family, and a dozen children's books -adventure stories aimed at 8- to 10-year-olds.

War service did not stop Tranter writing, and a number of novels were published during the war years, some inspired by his own experiences.

Between 1962 and 1971 Tranter published the landmark series The Fortified House in Scotland (in five volumes). This attempted to cover the history and structure of every primarily domestic castle in Scotland, 663 buildings in all. A small number of non-domestic buildings associated with priories, churches, communal defence etc. etc. were also included. Highly regarded at the time, it is still read by those who have an interest in this specialist area.

While researching the castles, Tranter realised that there were many characters and incidents in Scottish history which could be used as the basis for novels, which he tried to make as accurate as possible – while making no effort to hide his own strong Scottish identity. The Queen's Grace (1953) was his first novel to focus on an historical character (in this case, Mary, Queen of Scots), although it contained a high fictional content. Two trilogies followed: the MacGregor Trilogy (1957–1962) and the Master of Gray Trilogy (1961–1965). By this time, Tranter was well established as a writer of serious historical fiction. The fictional content decreased as he became more experienced, and his later novels were almost entirely composed around the historical record. These novels have gained a wide readership while providing a basic grounding in Scottish history to their readers.

The historian
As noted above, Tranter had a lifelong interest in Scottish castles. Initially intrigued by their architectural history, Tranter soon developed an interest in Scottish history generally. As he moved into historical novels, his research became deeper until he had amassed vast knowledge of Scotland's history to a very detailed level. His ability to retell history as a 'story' provided an accessible source for many people. As well as his novels, this knowledge was translated into such non-fiction works as The Story of Scotland. Becoming intimate with so much of the historical record, Tranter formed many theories of history, some of which were contrary to established thought. These were presented throughout his books. One example of this is his belief that the stone under the Coronation Chair is not the true Stone of Destiny, but a thirteenth-century fake which he refers to as the Westminster Stone.

Public life
Tranter was involved in many activities outside his writing. From the 1940s onwards he delivered lectures to private groups and organisations, and, as his writing career developed, he undertook many speaking engagements, including some tours to the USA. He was also invited to join—or was instrumental in setting up—many committees and community groups, in fields as diverse as Scottish Highlands roads and settlement, wild fowling and Athelstaneford's Flag Fund.

His notable involvements include: the original Scottish Convention, a cross-party pressure group established during the 1940s to encourage devolution (Edinburgh chairman); National Covenant Association; National Forth Road Bridge Committee; Saltire Society (honorary president).

Following the publication of The Fortified House in Scotland, Tranter was regularly asked for advice on the restoration of many tower houses and castles. He was closely involved in the restoration of over 60 castles, such as Fa'side Castle and Menstrie Castle.

Death
He died on 9 January 2000, aged 90, after contracting flu, in Gullane, where his funeral and burial took place.

A final eight novels were published after Tranter's death, the last book Hope Endures appearing in 2005. According to his daughter these "were all finished at the time of his death, as he always kept ahead in his writing".

Set before 1286

 * Druid Sacrifice (1993 by Hodder & Stoughton)
 * Columba (1987 by Hodder & Stoughton)
 * Kenneth (1990 by Hodder & Stoughton)
 * High Kings and Vikings (1998 by Hodder & Stoughton)
 * MacBeth the King (1978 by Hodder & Stoughton)
 * Margaret the Queen (1979 by Hodder & Stoughton)
 * David the Prince (1980 by Hodder & Stoughton)
 * Lord of the Isles (1983 by Hodder & Stoughton)
 * Tapestry of the Boar (1993 by Hodder & Stoughton)
 * Sword of State (1999 by Hodder & Stoughton)
 * Envoy Extraordinary (1999 by Hodder & Stoughton)
 * Crusader (1991 by Hodder & Stoughton)
 * True Thomas (1981 by Hodder & Stoughton)

Set between 1286 and 1603

 * The Wars of Independence (1286–1329)
 * The Isleman (2003)
 * The Wallace
 * Robert the Bruce trilogy
 * The Steps to the Empty Throne (1969)
 * The Path of the Hero King (1970)
 * The Price of the King's Peace (1971)
 * The Bruce Legacy (1329–1406)
 * Flowers of Chivalry (1987)
 * Courting Favour (2000)
 * Stewart trilogy
 * Lords of Misrule (1976)
 * A Folly of Princes (1977)
 * The Captive Crown (1977)
 * The End of the Line (2000)
 * The Jameses (1406–1542)
 * Lion Let Loose (1967)
 * The Lion's Whelp (1997)
 * Black Douglas (1968)
 * Price of a Princess (1994)
 * Lord in Waiting (1994)
 * The Admiral (2001)
 * Chain of Destiny (1964)
 * A Flame for the Fire (1998)
 * A Stake in the Kingdom (1966)
 * James V trilogy
 * The Riven Realm (1984)
 * James by the Grace of God (1985)
 * Rough Wooing (1986)
 * Mary and James VI (1513–1603)
 * Marie & Mary (2004)
 * The Marchman (1997)
 * Warden of the Queen's March (1989)
 * The Queen's Grace (1953)
 * A Rage of Regents (1996)
 * Right Royal Friend (2003)
 * Hope Endures (2005)
 * Master of Gray trilogy
 * Lord and Master (1973)
 * The Courtesan (1963)
 * Past Master (1973)
 * Children of the Mist (1992)

Set after 1603

 * The Wisest Fool (1974) - 1603–1611 - James VI
 * Poetic Justice (1996) - 1611-17 - William Alexander, 1st Earl of Stirling
 * Unicorn Rampant (1984) - 1617–1619 - John Stewart of Methven, illegitimate son of Ludovic Stewart, 2nd Duke of Lennox
 * Mail Royal (1989) - 1621 - David Gray
 * Montrose omnibus
 * The Young Montrose (1972) - 1636–1645 - James Graham, 1st Marquess of Montrose
 * Montrose: The Captain-General (1973) - 1645–1650
 * Honours Even (1995) - 1650-1654
 * Triple Alliance (2001) - 1680-7?
 * The Patriot (1982) - 1678–1707 - Andrew Fletcher
 * MacGregor trilogy
 * MacGregor's Gathering (1957) - 1706–1708
 * The Clansman (1959) - 1711–1716
 * Gold for Prince Charlie (1972) - 1743–1746

Children's books

 * Spaniard's Isle (1958, Brockhampton Press)
 * Border Riding (1959, Brockhampton Press)
 * Nestor the Monster (1960, Brockhampton Press; paperback edition 1992, B & W Publishing)
 * Birds of a Feather (1961, Brockhampton Press)
 * The Deer Poachers (1961, Blackie)
 * Something Very Fishy (1962, Collins)
 * Give a Dog a Bad Name (1963, Collins. Published as Smoke Across the Highlands in USA, 1964, Platt & Monk)
 * Silver Island (1964, Thomas Nelson)
 * Pursuit (1965, Collins)
 * Tinker Tess (1967, Dobson Books)
 * Fire and High Water (1967, Collins)
 * To the Rescue (1968, Dobson Books)

Non-fiction books

 * The Fortalices and Early Mansions of Southern Scotland 1400–1650 (1935, The Moray Press)
 * Contains the sketches and notes of small castles visited throughout his teenage years and early twenties. Tranter later described it as "terribly pretentious and pretty amateurish."  He expanded the format for his later work The Fortified House in Scotland.

 * The Fortified House in Scotland (in five volumes, c. 1963)
 * Pegasus Book of Scotland (1964, Dobson Books)
 * Outlaw of the Highlands: Rob Roy (1965, Dobson Books)
 * A study of Scottish folk hero Rob Roy MacGregor. Reissued as Rob Roy MacGregor by Lochar Publishing (1991), and Neil Wilson Publishing (1995).

 * Land of the Scots (1968, Hodder & Stoughton)
 * The Queen's Scotland (in four volumes, c. 1971–7)
 * Intended to be a detailed gazetteer of every parish in Scotland. His wife assisted him heavily and she died before it could be completed.  Tranter never finished the series.

 * Portrait of the Border Country (1972, Robert Hale)
 * Revised edition published in 1987 as The Illustrated Portrait of the Border Country.

 * Portrait of the Lothians (1979, Robert Hale)
 * Nigel Tranter's Scotland (1981, Richard Drew Publishing. Penguin edition 1983)
 * Scottish Castles: Tales and Traditions
 * First published 1982 by Macdonald Publishing. Revised edition by Neil Wilson Publishing, 1993.  US Edition by Barnes & Noble, 1993.

 * Traveller's Guide to the Scotland of Robert the Bruce (1985, Routledge & Kegan Paul; US edition by Historical Times Inc, 1985)
 * The Story of Scotland (1987, Routledge & Kegan Paul. Re-issued 1992, Neil Wilson Publishing)
 * Footbridge to Enchantment (1992, Locahr publishing. Revised edition 1993, B&W Publishing)
 * No Tigers in the Hindu Kush (Editor) (1968, Hodder & Stoughton). A tribute to his son Philip who died in an accident
 * Flight of Dutchmen

Westerns
Tranter claimed each of these books took him six weeks to write. He sold them outright for £100 each. They were published under the pseudonym 'Nye Tredgold'.

 * Thirsty Range (1950, Ward Lock & Co)
 * Heartbreak Valley (1951, Ward Lock & Co)
 * Big Corral (1952, Ward Lock & Co)
 * Trail Herd (1952, Ward Lock & Co)
 * Desert Doublecross (1953, Ward Lock & Co)
 * Cloven Hooves (1954, Ward Lock & Co)
 * Dynamite Trail (1955, Ward Lock & Co)
 * Rancher Renegade (1956, Ward Lock & Co)
 * Trailing Trouble (1957, Ward Lock & Co)
 * Bloodstone Trail (1958, Ward Lock & Co)

Awards and honours

 * Honorary MA from the University of Edinburgh, 1971
 * OBE for services to literature, 1983
 * BBC Scotland Scot of the Year, 1989
 * Honorary Doctor of Literature, University of Strathclyde, 1990

title: Nigel Tranter