title: Personal protective equipment

text: Each day, about 2,000 US workers have a job-related eye injury that requires medical attention. Eye injuries can happen through a variety of means. Most eye injuries occur when solid particles such as metal slivers, wood chips, sand or cement chips get into the eye. Smaller particles in smokes and larger particles such as broken glass also account for particulate matter-causing eye injuries. Blunt force trauma can occur to the eye when excessive force comes into contact with the eye. Chemical burns, biological agents, and thermal agents, from sources such as welding torches and UV light, also contribute to occupational eye injury.


title: Personal protective equipment

text: While the required eye protection varies by occupation, the safety provided can be generalized. Safety glasses provide protection from external debris, and should provide side protection via a wrap-around design or side shields.


title: Personal protective equipment

text: Industrial noise is often overlooked as an occupational hazard, as it is not visible to the eye. Overall, about 22 million workers in the United States are exposed to potentially damaging noise levels each year. Occupational hearing loss accounted for 14% of all occupational illnesses in 2007, with about 23,000 cases significant enough to cause permanent hearing impairment. About 82% of occupational hearing loss cases occurred to workers in the manufacturing sector. In the US the Occupational Safety and Health Administration establishes occupational noise exposure standards. The National Institute for Occupational Safety and Health recommends that worker exposures to noise be reduced to a level equivalent to 85 dBA for eight hours to reduce occupational noise-induced hearing loss.


title: Personal protective equipment

text: PPE for hearing protection consists of earplugs and earmuffs. Workers who are regularly exposed to noise levels above the NIOSH recommendation should be provided with hearing protection by the employers, as they are a low-cost intervention. A personal attenuation rating can be objectively measured through a hearing protection fit-testing system. The effectiveness of hearing protection varies with the training offered on their use.


title: Personal protective equipment

text: This form of PPE is all-encompassing and refers to the various suits and uniforms worn to protect the user from harm. Lab coats worn by scientists and ballistic vests worn by law enforcement officials, which are worn on a regular basis, would fall into this category. Entire sets of PPE, worn together in a combined suit, are also in this category.


title: Personal protective equipment

text: Below are some examples of ensembles of personal protective equipment, worn together for a specific occupation or task, to provide maximum protection for the user.


title: Personal protective equipment

text: Participants in sports often wear protective equipment. Studies performed on the injuries of professional athletes, such as that on NFL players, question the effectiveness of existing personal protective equipment.


title: Personal protective equipment

text: The definition of what constitutes personal protective equipment varies by country. In the United States, the laws regarding PPE also vary by state. In 2011, workplace safety complaints were brought against Hustler and other adult film production companies by the AIDS Healthcare Foundation, leading to several citations brought by Cal/OSHA. The failure to use condoms by adult film stars was a violation of Cal/OSHA's Blood borne Pathogens Program, Personal Protective Equipment. This example shows that personal protective equipment can cover a variety of occupations in the United States, and has a wide-ranging definition.


title: Personal protective equipment

text: At the European Union level, personal protective equipment is governed by Directive 89/686/EEC on personal protective equipment (PPE). The Directive is designed to ensure that PPE meets common quality and safety standards by setting out basic safety requirements for personal protective equipment, as well as conditions for its placement on the market and free movement within the EU single market. It covers "any device or appliance designed to be worn or held by an individual for protection against one or more health and safety hazards". The directive was adopted on 21 January 1989 and came into force on 1 July 1992. The European Commission additionally allowed for a transition period until 30 June 1995 to give companies sufficient time to adapt to the legislation. After this date, all PPE placed on the market in EU Member States was required to comply with the requirements of Directive 89/686/EEC and carry the CE Marking.


title: Personal protective equipment

text: Article 1 of Directive 89/686/EEC defines personal protective equipment as any device or appliance designed to be worn or held by an individual for protection against one or more health and safety hazards. PPE which falls under the scope of the Directive is divided into three categories:


title: Personal protective equipment

text: Directive 89/686/EEC on personal protective equipment does not distinguish between PPE for professional use and PPE for leisure purposes.


title: Personal protective equipment

text: Personal protective equipment falling within the scope of the Directive must comply with the basic health and safety requirements set out in Annex II of the Directive. To facilitate conformity with these requirements, harmonized standards are developed at the European or international level by the European Committee for Standardization (CEN, CENELEC) and the International Organization for Standardization in relation to the design and manufacture of the product. Usage of the harmonized standards is voluntary and provides presumption of conformity. However, manufacturers may choose an alternative method of complying with the requirements of the Directive.


title: Personal protective equipment

text: The European Commission is currently working to revise Directive 89/686/EEC. The revision will look at the scope of the Directive, the conformity assessment procedures and technical requirements regarding market surveillance. It will also align the Directive with the New Legislative Framework. The European Commission is likely to publish its proposal in 2013. It will then be discussed by the European Parliament and Council of the European Union under the ordinary legislative procedure before being published in the Official Journal of the European Union and becoming law.


title: Personal protective equipment

text: Research studies in the form of randomized controlled trials and simulation studies are needed to determine the most effective types of PPE for preventing the transmission of infectious diseases to healthcare workers.


title: Personal protective equipment

text: There is low certainty evidence that supports making improvements or modifications to PPE in order to help decrease contamination. Examples of modifications include adding tabs to masks or gloves to ease removal and designing protective gowns so that gloves are removed at the same time. In addition, there is low certainty evidence that the following PPE approaches or techniques may lead to reduced contamination and improved compliance with PPE protocols: Wearing double gloves, following specific doffing (removal) procedures such as those from the CDC, and providing people with spoken instructions while removing PPE.


title: Port Blair

text: Port Blair () is the capital city of the Andaman and Nicobar Islands, a union territory of India in the Bay of Bengal. It is also the local administrative sub-division ("tehsil") of the islands, the headquarters for the district of South Andaman and is the territory's only notified town.


title: Port Blair

text: Port Blair serves as the entry point for visiting the Andaman and Nicobar Islands. Port Blair is connected with mainland India by both air and sea. It is a two to three-hour flight from mainland India to Port Blair's Veer Savarkar International Airport, and three to four days by sea to reach Kolkata, Chennai, or Visakhapatnam from Haddo Wharf in Port Blair. It is home to several museums and a major naval base INS Jarawa of the Indian Navy, along with sea and air bases of the Indian Coast Guard, Andaman and Nicobar Police, Andaman and Nicobar Command, the first integrated tri-command of the Indian Armed Forces and the Indian Air Force.


title: Port Blair

text: Port Blair is also famous for the historic Cellular Jail and other small islands like Corbyn's Cove, Wandoor, Ross Island, Viper Island and so forth, which were once home to British colonists. Port Blair has been selected as one of the cities to be developed as a smart city under the Smart Cities Mission.


title: Port Blair

text: The indigenous inhabitants are the Andamenese. Radiocarbon dating studies of the kitchen refuse dumps from the mounds excavated by the Anthropological Survey of India at Choladari near Port Blair indicate human occupation for at least 2,000 years, although they are likely to have diverged from the inhabitants of the mainland significantly earlier.


title: Port Blair

text: In 1789 the Government of Bengal established a penal colony on Chatham Island in the southeast bay of Great Andaman, named Port Blair in the honour of Archibald Blair of the East India Company. After two years, the colony moved to the northeast part of Great Andaman and was named Port Cornwallis after Admiral William Cornwallis. However, there was much disease and death in the penal colony, and the government ceased operating it in May 1796.


title: Port Blair

text: In 1824 Port Cornwallis was the rendezvous of the fleet carrying the army to the First Anglo-Burmese War. In the 1830s and 1840s, shipwrecked crews who landed on the Andamans were often attacked and killed by the natives, alarming the British government. In 1855, the government proposed another settlement on the islands, including a convict establishment, but the Indian Rebellion of 1857 forced a delay in its construction.


title: Port Blair

text: However, since the rebellion provided the British with a lot of new prisoners, it made the new Andaman settlement and prison an urgent necessity. Construction began in November 1857 at the renovated Port Blair, avoiding the vicinity of a salt swamp which seemed to have been the source of many of the old colony's problems. The penal colony was originally on Viper Island. The convicts, mostly political prisoners, suffered life imprisonment at hard labour under cruel and degrading conditions. Many were hanged, while others died of disease and starvation. Between 1864 and 1867 a penal establishment was also built with convict labour on the northern side of Ross Island. These structures now lie in ruins.


title: Port Blair

text: As the Indian independence movement continued to grow in the late 19th century, the enormous Cellular Jail was constructed between 1896 and 1906 to house Indian convicts, mostly political prisoners, in solitary confinement. The Cellular Jail is also known as "Kala Pani" (translated as "Black Waters"), a name given to it due to the torture and general ill-treatment towards its Indian convicts.


title: Port Blair

text: The airport at Port Blair, Andaman and Nicobar's capital, has been named Veer Savarkar International Airport. The commemorative blue plaque on India House fixed by the Historic Building and Monuments Commission for England reads "Vinayak Damodar Savarkar 1883–1966 Indian patriot and philosopher lived here."


title: Port Blair

text: In World War II the islands were occupied by the Japanese on 23 March 1942 without opposition from the garrison. From 1943 to 1944, Port Blair served as the headquarters of the Azad Hind government under Subhas Chandra Bose. British forces returned to the islands in October 1945.


title: Port Blair

text: Although affected by the 2004 Indian Ocean earthquake and tsunami, Port Blair survived sufficiently to act as a base for relief efforts in the islands.


title: Port Blair

text: Port Blair has a tropical monsoon climate (Köppen climate classification "Am"), with little variation in average temperature and large amounts of precipitation throughout the year. All months except January, February and March receive substantial rainfall.


title: Port Blair

text: Port Blair being the capital city of Andaman and Nicobar Islands is the entry point for all tourism related activities. Tourists first have to arrive to Port Blair before progressing on to any other islands in Andaman. At Port Blair, the major tourist places to visit are the Cellular Jail, Corbyns Cove Beach, North Bay Island, Ross Island renamed to Netaji Subhash Chandra Bose Island, Chidiatapu, Wandoor and other museums that are present within city limits. Entry charges are applicable to some of the tourist places.


title: Port Blair

text: India census, Port Blair had a population of 100,608. Males constitute 52.92% (53,247) of the population and females 47.07% (47,361). 9.3% of the population is under the age of 6 years.


title: Port Blair

text: Port Blair has an average literacy rate of 89.76%, higher than the national average that is 74.04%. In Port Blair, male literacy is 92.79%, and female literacy is 86.34%.


title: Port Blair

text: The Port Blair Municipal Council, abbreviated, PBMC, is the ruling civic body. Current Chairperson is U. Kavitha, Bharatiya Janata Party Recent elections were held in 2022


title: Chromebook

text: A Chromebook (sometimes stylized in lowercase as chromebook) is a laptop or tablet running the Linux-based ChromeOS as its operating system. Initially designed to heavily rely on web applications for tasks using the Google Chrome browser, Chromebooks have since expanded to be able to run Android and full-fledged Linux apps since 2017 and 2018, respectively. All supported apps can be installed and launched alongside each other.


title: Chromebook

text: Chromebooks can work offline; applications like Gmail, Google Calendar, Google Keep, and Google Drive synchronize data when reconnecting to the Internet. Google Play video content is available offline using the Google Play Movies & TV extension with the Chrome browser.


title: Chromebook

text: The first Chromebooks shipped on June 15, 2011. Other form factors include Chromebox desktops, Chromebase, which places the computer in an all-in-one unit, an HDMI stick PC called a Chromebit, and Chromebook tablets.


title: Chromebook

text: In 2020, Chromebooks outsold Apple Macs for the first time by taking market share from laptops running Microsoft Windows. This rise is attributed to the platform's success in the education market.


title: Chromebook

text: The first Chromebooks for sale, by Acer Inc. and Samsung, were announced at the Google I/O conference in May 2011 and began shipping on June 15, 2011. Lenovo, Hewlett Packard and Google itself entered the market in early 2013. In December 2013, Samsung launched a Samsung Chromebook specifically for the Indian market that employed the company's Exynos 5 Dual core processor.


title: Chromebook

text: Critical reaction to the device was initially skeptical, with some reviewers, such as then "New York Times" technology columnist David Pogue, unfavorably comparing the value proposition of Chromebooks with that of more fully featured laptops running the Microsoft Windows operating system. That complaint dissipated later in reviews of machines from Acer and Samsung that were priced lower.


title: Chromebook

text: In February 2013, Google announced and began shipping the Chromebook Pixel, a higher-spec machine with a high-end retail price.


title: Chromebook

text: In January 2015, Acer announced the first big screen Chromebook, the Acer Chromebook 15 with an FHD 15.6-inch display.


title: Chromebook

text: By March 2018 Chromebooks made up 60% of computers purchased by schools in the United States. In October 2012, Simon Phipps, writing in "InfoWorld", said, "The Chromebook line is probably the most successful Linux desktop/laptop computer we've seen to date".


title: Chromebook

text: In May 2016, Google announced it would make Android apps available on Chromebooks via the Google Play application distribution platform. At the time, Google Play access was scheduled for the ASUS Chromebook Flip, the Acer Chromebook R 11 and the most recent Chromebook Pixel, with other Chromebooks slated over time. Partnering with Google, Samsung released the Chromebook Plus and Chromebook Pro in early 2017, the first Chromebooks to come with the Play Store pre-installed. A February 2017 review in "The Verge" reported that the Plus with its ARM processor handled Android apps "much better" than the Intel-based Pro, but said that "Android apps on Chrome OS are still in beta" and are "very much [an] unfinished experience." The number of ChromeOS systems supporting Android apps in either the stable or beta channel is increasing.


title: Chromebook

text: In May 2018, Google announced it would make Linux desktop applications available on Chromebooks via a virtual machine code-named "Crostini". ChromeOS, which runs on Chromebooks is already based on the Linux kernel, but it does not provide default support for Linux-based applications. Crostini left the beta stage in May 2021 as part of release 91. Google maintains a list of devices that were launched before 2019, which support Linux applications.


title: Chromebook

text: Initial hardware partners for Chromebook development included Acer, Adobe, Asus, Freescale, Hewlett-Packard (later HP Inc.), Lenovo, Qualcomm, Texas Instruments, Toshiba, Intel, Samsung, and Dell.


title: Chromebook

text: Chromebooks ship with ChromeOS, an operating system that uses the Linux kernel and the Google Chrome web browser with an integrated media-player. Enabling developer mode allows the installation of Linux distributions and other operating systems on Chromebooks. Chromebooks also include a screw or switch directly on the motherboard to enable or disable write protection. Crouton is a script that allows the installation of Linux distributions from ChromeOS and running both operating systems simultaneously. Some Chromebooks include SeaBIOS, which can be turned on to install and boot Linux distributions directly. With limited offline capability and a fast boot-time, Chromebooks are primarily designed for use while connected to the Internet and signed in to a Google account. Instead of installing traditional applications that propose risk of malware, users install web apps from the Chrome Web Store. Google claims that a multi-layer security architecture eliminates the need for anti-virus software.


title: Chromebook

text: Support for many Bluetooth and USB devices such as cameras, mice, external keyboards and flash drives is included, utilizing a feature similar to plug-and-play on other operating systems.


title: Chromebook

text: Google supports new Chromebooks with automatic updates for at least 8 years since 2020, previously it was 6.5 years, the date when a device will stop receiving automatic software and security updates can be found in the "Additional info" section of the "About device" in the device settings. Google maintain an Auto Update policy listing ChromeOS makes and models with their auto update expiration dates.


title: Chromebook

text: The hardware generation and Linux kernel version of most products can be inferred from the code name and its corresponding video game series:


title: Chromebook

text: The first two commercially available Chromebooks, the Samsung Series 5 and the Acer AC700, were unveiled on May 11, 2011, at the Google I/O developer conference. They were to begin selling through online channels, including Amazon and Best Buy in the United States, the United Kingdom, France, Germany, the Netherlands, Italy and Spain starting June 15, 2011; however, Acer's AC700 was not available until early July. The first machines sold for between $349 and $499, depending on the model and 3G option. Google also offered a monthly payment scheme for business and education customers at $28 and $20 per user, per month, respectively for a three-year contract, including replacements and upgrades. Verizon offers models equipped with 3G/4G LTE connectivity 100–200 MB of free wireless data per month, for two years.


title: Chromebook

text: Google's early marketing efforts relied primarily on hands-on experience: giving away Samsung machines to 10 Cr-48 pilot program participants along with the title Chromebook Guru and lending Chromebooks to passengers on some Virgin America flights.


title: Chromebook

text: At the end of September 2011, Google launched the Chrome Zone, a "store within a store", inside the Currys and PC World superstore in London. The store had a Google-style look and feel with splashes of color all around the retail store front. The concept was later changed to a broader in-store Google shop, which has not expanded beyond the PC World on Tottenham Court Road.


title: Chromebook

text: In addition to these marketing strategies, Google Chrome has created several "Chromebook minis" that demonstrate the ease of use and simplicity of the devices in a comical manner. For example, when the question "How do you back up a Chromebook" is asked, it is implied to refer to data backup, but instead, shows two hands pushing a Chromebook back to the end of a table. This is followed by the statement, "You don't have to back up a Chromebook," showing how all data is stored on the web.


title: Chromebook

text: In an article published on ZDNet in June 2011, entitled "Five Chromebook concerns for businesses", Steven J. Vaughan-Nichols faulted the devices for lack of virtual private network capability, not supporting some Wi-Fi security methods, in particular Wi-Fi Protected Access II (WPA2) Enterprise with Extensible Authentication Protocol-Transport Layer Security (EAP-TLS) or Cisco's Lightweight Extensible Authentication Protocol (LEAP). He also noted that its file manager does not work, the need to use the undocumented crosh shell to accomplish basic tasks such as setting up a secure shell (SSH) network connection as well as serious deficiencies in documentation.


title: Chromebook

text: In one of the first customer reviews, the city of Orlando, Florida, reported on their initial testing of 600 Chromebooks as part of a broader study related to accessing virtual desktops. Early indications show potential value in reducing IT support costs. End users have indicated that the Chromebook is easy to travel with and starts up quickly. One stated that "If I just need to stay connected for emergencies, I take my Chrome," but when traveling for business she would still take her laptop. Orlando does plan to continue to use the Chromebooks.


title: Chromebook

text: On November 21, 2011, Google announced price reductions on all Chromebooks. Since then, the Wi-Fi-only Samsung Series 5 was reduced to $349, the 3G Samsung Series 5 was reduced to $449, and the Acer AC700 was reduced to $299.


title: Chromebook

text: The updated Series 5 550 and the Chromebox, the first ChromeOS desktop machines, were released by Samsung in May 2012. While the two lowest cost Chromebooks emerged later in the fall: the $249 Samsung Series 3 and the $199 Acer C7. The following February, Google introduced the most expensive machine, their Chromebook Pixel, with a starting price of $1299. All models released after May 2012, include 100 GB–1.09 TB of Google Drive cloud storage and 12 GoGo Wi-Fi passes.


title: Chromebook

text: By January 2013, Acer's Chromebook sales were being driven by "heavy Internet users with educational institutions", and the platform represented 5–10 percent of the company's US shipments, according to Acer president Jim Wong. He called those numbers sustainable, contrasting them with low Windows 8 sales which he blamed for a slump in the market. Wong said that the company would consider marketing Chromebooks to other developed countries, as well as to corporations. He noted that although ChromeOS is free to license for hardware vendors, it has required greater marketing expenditure than Windows, offsetting the licensing savings.


title: Chromebook

text: During the first 11 months of 2013, 1.76 million Chromebooks sold in the United States, representing 21% of the US commercial business-to-business laptop market. During the same period in 2012, Chromebooks sold 400,000 units and had a negligible market share.


title: Chromebook

text: In January 2015, Silviu Stahie noted in Softpedia that Chromebooks were eating into Microsoft's market share. He said "Microsoft is engaged in a silent war and it's actually losing. They are fighting an enemy that is so insidious and so cunning that it's actually hurting the company more than anything else. The enemy is called Chromebooks and they are using Linux...There is no sign that things are slowing down and Microsoft really needs a win, and soon if it wants to remain relevant."


title: Chromebook

text: In 2015, Chromebooks, by sales volume (to companies in the US), are second after Windows based devices (with Android tablets, overtaking Apple's devices in 2014): "Chromebook sales through the U.S. B2B channels increased 43 percent during the first half of 2015, helping to keep overall B2B PC and tablet sales from falling. [..] Sales of Google OS-equipped (Android and Chrome) devices saw a 29 percent increase over 2014 propelled by Chromebook sales, while Apple devices declined 12 percent and Windows devices fell 8 percent."


title: Chromebook

text: The education market has been the Chromebooks' most notable success, competing on the low cost of the hardware, software and upkeep. The simplicity of the machines, which could be a drawback in other markets, has proven an advantage to school districts by reducing training and maintenance costs.


title: Chromebook

text: By January 2012, even while commercial sales were flat, Google placed nearly 27,000 Chromebooks in schools across 41 states in the US, including "one-on-one" programs, which allocate a computer for every student in South Carolina, Illinois, and Iowa. As of August 2012, over 500 school districts in the United States and Europe were using the device. In 2016, Chromebooks represented 58 percent of the 2.6 million mobile devices purchased by U.S. schools and about 64 percent of that market outside the U.S. By contrast, sales of Apple tablets and laptops to U.S. schools dropped that year to 19 percent, compared with 52 percent in 2012.


title: Chromebook

text: Helping spur Chromebook sales is Google Classroom, an app designed for teachers in 2014, that serves as a hub for classroom activities including attendance, classroom discussions, homework and communication with students and parents.


title: Chromebook

text: There have, however, been concerns about privacy within the context of the education market for Chromebooks. Officials at schools issuing Chromebooks for students have affirmed that students have no right to privacy when using school-issued Chromebooks, even at home, and that all online and offline activity can be monitored by the school using third-party software pre-installed on the laptops. Further, the Electronic Frontier Foundation has complained that Google itself is violating the privacy of students by enabling the synchronization function within Google Chrome ("Chrome Sync") by default, allowing web browsing histories and other data of students – including those under-13 – to be stored on Google servers and potentially used for purposes other than authorized educational purposes. A point of contention has been the fact that users of school-issued Chromebooks cannot change these settings themselves as a measure to protect their privacy; only the administrator who issued the laptops can change them. The EFF claims that this violates a Student Privacy Pledge already signed by Google in 2014. EFF staff attorney Nate Cardozo stated: "Minors shouldn't be tracked or used as guinea pigs, with their data treated as a profit center. If Google wants to use students' data to 'improve Google products', then it needs to get express consent from parents."


title: Chromebook

text: Despite this, Chromebooks made up 60% of computers used in schools in March 2018. CNET writer Alfred Ng cited superior security as the main reason for this level of market adoption.


title: Chromebook

text: According to research firms Gartner and Canalys, over 30 million Chromebooks were shipped in 2020, as school districts and parents purchased them for remote learning purposes during the COVID-19 pandemic.


title: Chromebook

text: At a December 7, 2010, press briefing, Google announced the ChromeOS Pilot Program, a pilot experiment and the first Chromebook, the Cr-48 Chrome Notebook, a prototype, to test the ChromeOS operating system and modified hardware for it. The device had a minimal design and was all black, completely unbranded although it was made by Inventec, and had a rubberized coating. The device was named after Chromium-48, an unstable isotope of the metallic element Chromium (chemical symbol Cr), and the participants were named Cr-48 Test Pilots. Google distributed about 60,000 Cr-48 Chrome Notebooks between December 2010 and March 2011 for free to participants and in return asked for feedback such as suggestions and bug reports. The Cr-48 was intended for testing only, not retail sales.


title: Chromebook

text: The Cr-48's hardware design broke convention by replacing certain keys with shortcut keys, such as the function keys, and replacing the caps lock key with a dedicated search key (now called the "Everything Button"), which can be changed back to caps lock in the OS's keyboard settings. Google addressed complaints that the operating system offers little functionality when the host device is not connected to the Internet, demonstrated an offline version of Google Docs, and announced a 3G plan that would give users 100 MB of free data each month, with additional paid plans available from Verizon.


title: Chromebook

text: The device's USB port is capable of supporting a keyboard, mouse, Ethernet adapter, or USB storage, but not a printer, as ChromeOS offers no print stack. Adding further hardware outside of the previously mentioned items will likely cause problems with the operating system's "self knowing" security model. Users instead were encouraged to use a secure service called Google Cloud Print to print to legacy printers connected to their desktop computers, or to connect an HP ePrint, Kodak Hero, Kodak ESP, or Epson Connect printer to the Google Cloud Print service for a "cloud aware" printer connection.


title: Chromebook

text: The Cr-48 prototype laptop gave reviewers their first opportunity to evaluate ChromeOS running on a device. Ryan Paul of "Ars Technica" wrote that the machine "met the basic requirements for Web surfing, gaming, and personal productivity, but falls short for more intensive tasks." He praised Google's approach to security but wondered whether mainstream computer users would accept an operating system whose only application is a browser. He thought ChromeOS "could appeal to some niche audiences": people who just need a browser or companies that rely on Google Apps and other Web applications. But the operating system was "decidedly not a full-fledged alternative to the general purpose computing environments that currently ship on netbooks." Paul wrote that most of ChromeOS's advantages "can be found in other software environments without having to sacrifice native applications."


title: Chromebook

text: In reviewing the Cr-48 on December 29, 2010, Kurt Bakke of "Conceivably Tech" wrote that a Chromebook had become the most frequently used family appliance in his household. "Its 15 second startup time and dedicated Google user accounts made it the go-to device for quick searches, email as well as YouTube and Facebook activities." But the device did not replace other five notebooks in the house: one for gaming, two for the kids, and two more for general use. "The biggest complaint I heard was its lack of performance in Flash applications."


title: Chromebook

text: In ongoing testing, Wolfgang Gruener, also writing in "Conceivably Tech", said that cloud computing at cellular data speeds is unacceptable and that the lack of offline ability turns the Cr-48 "into a useless brick" when not connected. "It's difficult to use the Chromebook as an everyday device and give up what you are used to on a Mac/Windows PC, while you surely enjoy the dedicated cloud computing capabilities occasionally."


title: Chromebook

text: The Cr-48 features an Intel Atom N455, a single-core processor clocked at 1.66 GHz, with 512 KB of cache and hyperthreading enabled. It also features 2 GB of removable DDR3 memory in a single SO-DIMM, integrated chipset graphics (Intel GMA 3150), and a 66 watt-hour battery. It has been found that the Intel NM10 chipset can get very hot during operation due to lack of a proper heatsink, but this has been fixed in production Chromebooks.


title: Chromebook

text: Launched by Google in February 2013, the Chromebook Pixel was the high-end machine in the Chromebook family. The laptop has an unusual 3:2 display aspect ratio touch screen featuring what was at its debut the highest pixel density of any laptop, a faster CPU than its predecessors in the Intel Core i5, and an exterior design described by Wired as "an austere rectangular block of aluminum with subtly rounded edges". A second Pixel featuring LTE wireless communication and twice the storage capacity was shipped for arrival on April 12, 2013.


title: Chromebook

text: The machine received much media attention, with many reviewers questioning the Pixel's value proposition compared to similarly priced Windows machines and the MacBook Air.


title: Chromebook

text: In 2017, Google launched the Pixelbook to replace the Chromebook Pixel. Like the Chromebook Pixel, the Pixelbook has a 3:2 aspect ratio touchscreen with a high pixel density 12.3" display. Unlike the original Chromebook Pixel but like the second generation, the Pixelbook excludes an option for LTE. Instead, it implements Google's "instant tethering", which automatically tethers a Pixelbook to a Pixel phone's mobile connection.


title: Chromebook

text: Reviewing the Samsung Series 5 specifications, Scott Stein of CNET was unimpressed with a machine with a 12-inch screen and just 16 GB of onboard storage. "Chrome OS might be lighter than Windows XP, but we'd still prefer more media storage space. At this price, you could also get an Wi-Fi AMD E-350-powered ultraportable running Windows 7." On the other hand, MG Siegler of TechCrunch wrote a largely favorable review, praising the improvements in speed and touchpad sensitivity over the CR-48 prototype, as well as the long battery life and the fact that all models are priced below the iPad.


title: Chromebook

text: In June 2011, iFixit dismantled a Samsung Series 5 and concluded that it was essentially an improved Cr-48. They rated it as 6/10 for repairability, predominantly because the case has to be opened to change the battery and because the RAM chip is soldered to the motherboard. iFixit noted that the "mostly-plastic construction" felt "a little cheap". On the plus side they stated that the screen was easy to remove and most of the components, including the solid-state drive would be easy to replace. iFixit's Kyle Wiens wrote that the Series 5 "fixes the major shortfalls of the Cr-48 and adds the polish necessary to strike lust into the heart of a broad consumer base: sleek looks, 8+ hours of battery life, and optimized performance."


title: Chromebook

text: In May 2012, Samsung introduced the Chromebook Series 5 550, with a Wi-Fi model and more expensive 3G model.


title: Chromebook

text: Reviews generally questioned the value proposition. Dana Wollman of Engadget wrote that the Chromebook's keyboard "put thousand-dollar Ultrabooks to shame" and offered better display quality than on many laptops selling for twice as much. But the price "seems to exist in a vacuum—a place where tablet apps aren't growing more sophisticated, where Transformer-like Win8 tablets aren't on the way and where there aren't some solid budget Windows machines to choose from."


title: Chromebook

text: Joe Wilcox of BetaNews wrote that "price to performance and how it compares to other choices" is "where Chromebook crumbles for many potential buyers." He noted that the new models sell for more than their predecessors, and while the price-performance ratio is quite favorable compared to the MacBook Air, "by the specs, there are plenty of lower-cost options."


title: Chromebook

text: In October 2012, the Series 3 Chromebook was introduced at a San Francisco event with the Samsung Chromebook XE303. The device was cheaper, thinner and lighter than the Chromebook 550. Google marketed the Series 3 as the computer for everyone, due to its simple operating system (ChromeOS) and affordable price. Target markets included students and first-time computer users, as well as households looking for an extra computer.


title: Chromebook

text: The lower price proved a watershed for some reviewers. New York Times technology columnist David Pogue reversed his earlier thumbs-down verdict on the Chromebook, writing that "$250 changes everything." The price is half that of an "iPad, even less than an iPad Mini or an iPod Touch. And you’re getting a laptop." He wrote that the Chromebook does many of the things people use computers and laptops for: playing flash videos, and opening Microsoft Office documents. "In other words, Google is correct when it asserts that the Chromebook is perfect for schools, second computers in homes and businesses who deploy hundreds of machines."


title: Chromebook

text: CNET's review of the Series 3 Chromebook was even more favorable, saying the machine largely delivered as a computer for students and as an additional computer for a household—especially for users who are already using Google Web applications like Google Docs, Google Drive, and Gmail. "It's got workable if not standout hardware, its battery life is good, it switches on quickly, and the $249 price tag means it's not as much of a commitment as the $550 Samsung Series 5 550 that arrived in May." The review subtracted points for performance. "It's fine for many tasks, but power users accustomed to having more than a couple dozen browser tabs open should steer clear."


title: Chromebook

text: The Chromebook 3 is distinct from and distinguished from the similarly named Samsung Series 3 in several respects: newer (released 2016), different architecture (Intel Celeron N3050 instead of Exynos 5 Dual ARM Cortex), thinner (0.7"), and less expensive (about $100 less than the Series 3); while remaining a full implementation of ChromeOS.


title: Chromebook

text: In 2020 Samsung introduced the Galaxy Chromebook, a high-end 2-in-1 laptop under the Galaxy branding for $999. Reviews praised the 4K AMOLED display, thin and light body, addition of the S-Pen, and speedy Intel Core i5-10210U performance. But they also criticized its poor battery life and heat output.


title: Chromebook

text: In October 2019, Samsung announced the Chromebook 4 (11.6") and 4+ (15.6") models. Both continue the budget model Chromebook line with a dual core Intel Celeron N4000 processor. The 4+ has a larger display and has model choices up to 6GB RAM. Reviews praised the cheap price and comfortable keyboard but criticized the terrible displays.


title: Chromebook

text: The follow-on to the Galaxy Chromebook, the Galaxy Chromebook 2 was introduced in 2021. With a cheaper price, lower FHD QLED display, lower Core i3 processor, and no stylus, it is largely a downgrade from the previous model. It is intended that these changes improve the battery life.


title: Chromebook

text: HP's first Chromebook, and the largest Chromebook on the market at that time, was the Pavilion 14 Chromebook launched February 3, 2013. It had an Intel Celeron 847 CPU and either 2GB or 4GB of RAM. Battery life was not long, at just over 4 hours, but the larger form factor made it more friendly for all-day use. HP introduced the Chromebook 11 on October 8, 2013, in the US. In December 2013, Google and HP recalled 145,000 chargers due to overheating. Sales were halted, resuming with a redesigned charger the following month. The HP Chromebook 14 was announced September 11, 2013 with an Intel Haswell Celeron processor, USB 3.0 ports, and 4G broadband. An updated version of the Chromebook lineup was announced on September 3, 2014. The 11-inch models included an Intel processor while the 14-inch models featured a fanless design powered by a Nvidia Tegra K1 processor. HP Chromebooks are available in several colors.


title: Chromebook

text: Classed as small form-factor PCs, Chromeboxes typically feature a power switch and a set of ports: local area network, USB, DVI-D, DisplayPort, and audio. As with Chromebooks, Chromeboxes employ solid-state memory and support Web applications, but require an external monitor, keyboard, and pointing device.


title: Chromebook

text: Chromebase is an "all-in-one" ChromeOS device. The first such model was released by LG Electronics which integrated a screen, speakers, 1.3-megapixel webcam and microphone, with a suggested retail price of $350. The company unveiled the product in January 2014, at International CES in Las Vegas.


title: Chromebook

text: The Chromebit is a stick PC running on Google's ChromeOS operating system. When placed in the HDMI port of a television or monitor, this device turns that display into a personal computer. Chromebit allows adding a keyboard and mouse over Bluetooth or USB port.


title: Chromebook

text: HDMI does not provide power to connected devices, so the Chromebit is supplied power from either an external USB power supply or draws power via a USB port on the monitor.


title: The Book Thief (film)

text: The Book Thief is a 2013 war drama film directed by Brian Percival and starring Geoffrey Rush, Emily Watson, and Sophie Nélisse. The film is based on the 2005 novel of the same name by Markus Zusak and adapted by Michael Petroni. The film is about a young girl living with her adoptive German family during the Nazi era. Taught to read by her kind-hearted foster father, the girl begins "borrowing" books and sharing them with the Jewish refugee being sheltered by her foster parents in their home. The film features a musical score by Oscar-winning composer John Williams.


title: The Book Thief (film)

text: "The Book Thief" premiered at the Mill Valley Film Festival on October 3, 2013, and was released for general distribution in the United States on November 8, 2013. The film received mixed reviews upon its theatrical release with some reviewers praising its "fresher perspective on the war" and its focus on the "consistent thread of humanity" in the story, with other critics faulting the film's "wishful narrative". With a budget of $19 million, the film was successful at the box office, earning over $76 million.


title: The Book Thief (film)

text: "The Book Thief" received Oscar, Golden Globe and BAFTA nominations for its score. For her performance in the film, Sophie Nélisse won the Hollywood Film Festival Spotlight Award, the Satellite Newcomer Award, and the Phoenix Film Critics Society Award for Best Performance by a Youth in a Lead or Supporting Role – Female. The film was released on Blu-ray and DVD on March 11, 2014.


title: The Book Thief (film)

text: In February 1938, Death tells about how a young girl called Liesel Meminger had piqued his interest. In one of the opening scenes, twelve-year-old Liesel is travelling with her mother and younger brother on a train. On the way, her brother dies and is buried next to the tracks. Liesel steals her first book, titled "The Grave Digger's Handbook", when it falls out of the gravedigger's pocket. Liesel is then brought to her new home in Munich, where she meets her new foster parents Rosa Hubermann and Hans Hubermann. Rudy Steiner, a boy who lives next door, accompanies her on her first day of school. When the teacher asks Liesel to write her name on the chalkboard, she is only able to write three Xs, revealing to her classmates that she is unable to write. She is taunted by her schoolmates who chant "dummkopf" ("dunce") at her. One of the boys, Franz Deutscher, challenges her to read just one word to which Liesel responds by beating him up. She impresses Rudy, and they become fast friends. When Hans, her foster father, realizes that Liesel cannot read, he begins to teach her, using the book that she took from the graveside along with a giant chalkboard. Liesel becomes captivated with reading anything she can.


title: The Book Thief (film)

text: Liesel and Rudy become members of the Hitler Youth movement. While at a Nazi book burning ceremony, Liesel and Rudy are harassed by Franz into throwing books onto the bonfire, but Liesel is upset to see the books being burned. When the bonfire ends and everyone leaves, Liesel is still there and she grabs a book that has been only singed. She is seen by Ilsa Hermann, wife of the Burgermeister (mayor). When Rosa asks Liesel to take the laundry to the mayor's spacious, gated house, she realizes that the woman who saw her taking the book is the mayor's wife. Instead, Ilsa takes her into their library and tells Liesel she can come by anytime and read as much as she'd like. One day Liesel is found reading by the mayor, who not only puts a stop to her visits but dismisses Rosa as their laundress.


title: The Book Thief (film)

text: During Kristallnacht, Max Vandenburg and his mother, who are Jewish, are told by a friend that only one of them can escape, and Max's mother forces him to go. Max's father had saved Hans' life in World War I, and hence he goes to the Hubermanns' house, where Rosa and Hans give him shelter. Max initially stays in Liesel's room while recovering from his trip, and they begin to become friends over their mutual hatred of Hitler. World War II begins, initially making most of the children in Liesel's neighborhood very happy. Max is moved to the basement so that he can move around more, but it is cold and he becomes dangerously ill. Liesel helps him recover by reading to him at every spare moment books "borrowed" from the mayor's library.


title: The Book Thief (film)

text: One day while "borrowing" a book from the mayor's home, Liesel is followed by Rudy. He discovers the secret of Max, whose name he reads on a journal Max gave to Liesel for Christmas. Rudy guesses that her family is hiding someone, and he swears to never tell anyone. Franz overhears Rudy's last words and violently pushes Rudy to reveal the secret. Rudy throws the journal into the river to keep it from Franz. After Franz leaves, Rudy plunges into the icy river to rescue the journal, and Liesel realizes that she can truly trust him. Soon, a local party member comes by to check the Hubermanns' basement, and they have to hide Max.


title: The Book Thief (film)

text: While working, Hans sees a neighbour and friend named Lehman being taken away by the police because he is a Jew. Hans tries to intervene, telling the officer that Lehman is a good man, but Hans's name is taken by the soldiers and he is thrown to the ground. Hans realizes what a mistake he has made, since this has made his family visible. He tells the family, and Max realises he must leave in order to protect them. Hans then receives a telegram that he has been conscripted into the army and must leave immediately.


title: The Book Thief (film)

text: On the way home from school, Liesel believes she has seen Max in a line of Jews being forcibly marched through town, and she begins screaming his name, running through the line. She is thrown to the sidewalk twice by German soldiers and finally gives up when Rosa picks her up and takes her home.


title: The Book Thief (film)

text: Hans returns home after being injured, and the family is reunited only for a short time. One night the city is bombed by accident, and the air raid sirens fail to go off. Hans, Rosa, Rudy's family and Franz are killed in the blast. Liesel is spared from the bombing because she fell asleep in the basement while writing in the journal given to her by Max. She sees her foster family on the ground, dead; she cries and hugs them. Soldiers bring Rudy out of his house alive, but he dies a few moments later after almost telling Liesel he loves her. Liesel begs him to wake up, and kisses him on the lips as a goodbye. Liesel passes out, and one of the soldiers carries her to a stretcher. When she wakes up, she sees a book among the rubble and picks it up. She then sees the mayor and Ilsa drive up. With Ilsa being the only friend she has left, Liesel runs up to her and hugs her.


title: The Book Thief (film)

text: Two years later, after Germany has been occupied by the Allies, Liesel is working in the tailor shop owned by late Rudy's father when Max suddenly enters. Overjoyed by his survival and return, she runs to hug him. The final scene is Death speaking again about Liesel's life and her death at the age of 90, mentioning her husband, children, and grandchildren, as we look over her modern day Manhattan Upper East Side apartment with pictures of her past and a portrait of her younger self, upon which the camera lingers. The narrator does not state whom she had married but implies that she became a renowned writer.


title: The Book Thief (film)

text: A search for an actress to play the eponymous book thief, Liesel Meminger, occurred across the world. On February 4, 2013, it was announced that Canadian actress Sophie Nélisse was cast in the role and that Australian actor Geoffrey Rush and English actress Emily Watson would be playing Meminger's foster parents.


title: The Book Thief (film)

text: Principal photography began in early March 2013 at Babelsberg Studio in Potsdam-Babelsberg, Germany. Locations included Marquardt Palace. The first trailer was released on August 21, with the Bastille song "Haunt" as the music.


title: The Book Thief (film)

text: Markus Zusak, Australian author of the best-selling, award-winning book on which the film is based, confirmed on his blog that the film would be narrated by the character of "Death", as was the novel. After some speculation that Death might be voiced by the anonymous American actor who was used in the official trailer, it was announced that English actor Roger Allam of "Game of Thrones" would portray Death in the film.


title: The Book Thief (film)

text: The music for the film was composed by John Williams, and the soundtrack album containing the score was released by Sony Classical and Fox Music. The album was released in the United States on November 19, 2013. It was nominated for an Academy Award, BAFTA and Golden Globe for Best Original Score. It won Best Instrumental Album at the 57th Grammy Awards.


title: The Book Thief (film)

text: "The Book Thief" marked the first time since 2005 that Williams had scored a film not directed by Steven Spielberg.


title: The Book Thief (film)

text: Originally scheduled for January 17, 2014, "The Book Thief"s limited theatrical release was moved forward to November 8, 2013, due to the fact that it was finished ahead of schedule and in order to compete in the 2013–14 award season. It premiered at the Mill Valley Film Festival on October 3, 2013, and was screened at the Savannah Film Festival on October 29, 2013. It expanded to a wide release on November 27, 2013.


title: The Book Thief (film)

text: "The Book Thief" received mixed reviews from critics. Review aggregation website Rotten Tomatoes gives the film a score of 47%, based on 149 reviews, with an average score of 5.70/10. The site's consensus states, "A bit too safe in its handling of its Nazi Germany setting, "The Book Thief" counters its constraints with a respectful tone and strong performances." On Metacritic, the film has a score of 53 out of 100, based on 31 critics, indicating "mixed or average reviews".


title: The Book Thief (film)

text: In her review for the "New Empress Magazine", Mairéad Roche praised the film for providing a "fresher perspective on the war" through the experiences of ordinary Germans who lived through the Nazi era. In addition to the "Oscar-baiting beautiful" cinematography and John Williams's film score that contribute to the film's emotional appeal, Roche singled out the performance of young Sophie Nélisse as Liesel that "matches the well-measured and seemingly effortless efforts of both Rush and Watson". Roche concluded,


title: The Book Thief (film)

text: In his review following the Mill Valley Film Festival, Dennis Harvey at "Variety" magazine wrote, "Rush generously provides the movie's primary warmth and humor; Watson is pitch-perfect as a seemingly humorless scold with a well-buried soft side." Harvey also praised the film's cinematography and film score, noting that "impeccable design contributions are highlighted by Florian Ballhaus'[s] somber but handsome widescreen lensing and an excellent score by John Williams that reps his first feature work for a director other than Steven Spielberg in years."


title: The Book Thief (film)

text: Stephanie Merry of "The Washington Post" was less impressed with the film, giving it two and half out of four stars. Merry felt that the film "has its moments of brilliance, thanks in large part to an adept cast" but that the film ultimately shows the difficulties of bringing a successful novel to the screen. In his review for the "Los Angeles Times", Robert Abele was also unimpressed, describing the film as "just another tasteful, staid Hollywoodization of terribleness, in which a catastrophic time acts as a convenient backdrop for a wishful narrative rather than the springboard for an honest one".


title: Harvard-Westlake School

text: Harvard-Westlake School is an independent, co-educational university preparatory day school consisting of two campuses located in Los Angeles, California, with approximately 1,600 students enrolled in grades seven through twelve. Its two predecessor organizations began as for-profit schools before turning non-profit, and eventually merging. It is not affiliated with Harvard University despite being named after it.


title: Harvard-Westlake School

text: The school has two campuses, the middle school campus in Holmby Hills and the high school, or what Harvard-Westlake refers to as their Upper School, in Studio City. It is a member of the G30 Schools group.


title: Harvard-Westlake School

text: The Harvard School for Boys was established in 1900 by Grenville C. Emery as a military academy, on the site of a barley field located at the corner of Western Avenue and Sixteenth Street (now Venice Boulevard) in Los Angeles, California. Emery was originally from Boston, and around 1900 he wrote to Harvard University to ask permission to use the Harvard name for his new secondary school, and received permission from the university's then-President, Charles W. Eliot. In 1911, it secured endorsement from the Episcopal Church, becoming a non-profit organization. In 1937, the school moved to its present-day campus at the former Hollywood Country Club on Coldwater Canyon in Studio City after receiving a $25,000 ($ in current dollar terms) loan from aviation pioneer Donald Douglas. In the late 1960s and early 1970s, the Harvard School gradually discontinued both boarding and its standing as a military academy, while expanding its enrollment, courses, classes, teachers, and curriculum.


title: Harvard-Westlake School

text: The Westlake School for Girls was established in 1904 by Jessica Smith Vance and Frederica de Laguna in what is now downtown Los Angeles, California, as an exclusively female institution offering both elementary and secondary education. It was so-named because it was near Westlake Park, now known as MacArthur Park. At the time, the school was a for-profit alternative to the already-established Marlborough School, which had been established as a non-profit before the turn of the century.


title: Harvard-Westlake School

text: It moved to its present-day campus located on North Faring Road in Holmby Hills, California, in 1927. The school was purchased by Sydney Temple, whose daughter, Helen Temple Dickinson, was headmistress until 1966, when Westlake became a non-profit institution. The Temple family owned the school until 1977, with Dickinson serving in an ex officio capacity. In 1968 Westlake became exclusively a secondary school.


title: Harvard-Westlake School

text: As both schools continued to grow in size towards the late 1980s, and as gender exclusivity became less of a factor both in the schools' reputations and desirability, the trustees of both Harvard and Westlake effectuated a merger in 1989. The two institutions had long been "de facto" sister schools, and interacted socially. Complete integration and coeducation began in 1991.


title: Harvard-Westlake School

text: In 2008, six sophomores were expelled and more than a dozen other students faced suspensions as a result of a cheating scandal.


title: Harvard-Westlake School

text: Currently, the school is split between the two campuses, with grades 7–9, the Middle School, located at the former Westlake campus in Holmby Hills and grades 10–12, the Upper School, located at the former Harvard campus in Studio City.


title: Harvard-Westlake School

text: The Middle School completed a four-year modernization in September 2008, replacing the original administration building, the library, and the instrumental music building. The campus now features a new library, two levels of classrooms in the Academic Center, the new Seaver Science Center, a turf field, a new administration office, a putting green, a long jump pit, and a large parking lot. Another significant addition of the project was the Bing Performing Arts Center which features a two-level, 800-seat theater, a suite of practice rooms, a few large classrooms for band, orchestra, and choir classes, a black box theater, a dance studio, and a room with atomic pianos for composing electronic music.


title: Harvard-Westlake School

text: Remnants of the former Middle School campus include the Marshall Center, which houses a gymnasium, weight room, and wrestling room, a swimming pool and diving boards, an outdoor basketball court, and a tennis court. Reynolds Hall, an academic building which is home to history, foreign language, and visual arts classes, began a modernization effort in June 2014 to be completed by September 2015. The building was named Wang Hall in honor of two parents who donated approximately $5 million to fund the project.


title: Harvard-Westlake School

text: The Upper School features the Munger Science Center and computer lab; the Rugby building which houses the English department, 300-seat theater, costume shop, and drama lab; the Seaver building, home to the foreign language and history departments as well as administrative offices and the visitor lobby; Chalmers, which houses the performing arts and math departments, book store, cafeteria, sandwich window, and student lounge; Kutler, which houses the Brendan Kutler Center for Interdisciplinary Studies and Independent Research and the Feldman-Horn visual arts studios, dark room, video labs, and gallery.


title: Harvard-Westlake School

text: The athletic facilities include Taper Gymnasium, used for volleyball and basketball as well as final exams; Hamilton Gymnasium, the older gymnasium still used for team practices and final exams; Copses Family Pool, a 50-meter Olympic size facility with a team room and stadium for viewing events for the aquatics program; and Ted Slavin Field, which features an artificial FieldTurf surface and a synthetic track and is used for football, soccer, track & field, lacrosse, and field hockey. In 2007, lights were added to Ted Slavin Field. The school also maintains an off-campus baseball facility, the O'Malley Family Field, in Encino, California.


title: Harvard-Westlake School

text: The Upper School campus also features the three-story Seeley G. Mudd Library and Saint Saviour's Chapel, a vestige from Harvard School for Boys' Episcopal days.


title: Harvard-Westlake School

text: In 2017, Harvard Westlake paid more than $40M for Weddington Golf & Tennis, a 16-acre country club located less than a mile from the Upper School campus, with plans to build a Community Athletics Center on the location. Their draft construction plan is still under review by the Los Angeles City Council.


title: Harvard-Westlake School

text: For the 2020–2021 school year is $41,300, with a new student fee of $2,000. Other expenses—which include books, transportation, meals, and class activities—typically average $2,500 to $5,000 (the latter for those who take advantage of the school's comprehensive bus service).


title: Harvard-Westlake School

text: Harvard-Westlake provided $11 million in financial aid in 2018. That year, approximately 20% of the student body received financial aid, which averaged $27,000 for each student that received financial aid.


title: Harvard-Westlake School

text: For the HW Class of 2019, average SATs were 716 (verbal) and 745 (math). Among the 292 seniors, there were 27 National Merit Semifinalists. Out of the approximately 1400 graduates between 2014 and 2018, twenty or more matriculated at the following universities: Barnard (20), Brown (33), Colgate (20), Columbia (37), Cornell (36), Duke (20), Emory (24), Georgetown (21), Harvard (45), Johns Hopkins (23), Kenyon (22), New York University (83), Northwestern (31), Stanford (38), Tulane (25), U. Cal Berkeley (42), U. of Chicago (43), U. of Michigan (70), U. of Pennsylvania (42), U. of Southern Cal (92), Wash U. St. Louis (50), Yale (22), Lipscomb University.


title: Harvard-Westlake School

text: For the 2019–2020 school year, Niche ranked Harvard-Westlake the best private high school in Los Angeles, the 2nd best private high school in California, and the 6th best private school in the United States.


title: Harvard-Westlake School

text: Harvard-Westlake fields 22 varsity teams in the California Interscholastic Federation Southern Section, as well as teams on the junior varsity, club, and junior high levels. 60% of HW students participate in interscholastic sports.


title: Harvard-Westlake School

text: Harvard-Westlake maintains a strong e-sports presence with a two year streak from 2018–2020 as 2nd strongest League of Legends team in California.


title: Monad (functional programming)

text: In functional programming, a monad is a software design pattern with a structure that combines program fragments (functions) and wraps their return values in a type with additional computation. In addition to defining a wrapping monadic type, monads define two operators: one to wrap a value in the monad type, and another to compose together functions that output values of the monad type (these are known as monadic functions). General-purpose languages use monads to reduce boilerplate code needed for common operations (such as dealing with undefined values or fallible functions, or encapsulating bookkeeping code). Functional languages use monads to turn complicated sequences of functions into succinct pipelines that abstract away control flow, and side-effects.


title: Monad (functional programming)

text: Both the concept of a monad and the term originally come from category theory, where a monad is defined as a functor with additional structure. Research beginning in the late 1980s and early 1990s established that monads could bring seemingly disparate computer-science problems under a unified, functional model. Category theory also provides a few formal requirements, known as the monad laws, which should be satisfied by any monad and can be used to verify monadic code.


title: Monad (functional programming)

text: Since monads make semantics explicit for a kind of computation, they can also be used to implement convenient language features. Some languages, such as Haskell, even offer pre-built definitions in their core libraries for the general monad structure and common instances.


title: Monad (functional programming)

text: "For a monad codice_1, a value of type codice_2 represents having access to a value of type codice_3 within the context of the monad." —C. A. McCann


title: Monad (functional programming)

text: More exactly, a monad can be used where unrestricted access to a value is inappropriate for reasons specific to the scenario. In the case of the Maybe monad, it is because the value may not exist. In the case of the IO monad, it is because the value may not be known yet, such as when the monad represents user input that will only be provided after a prompt is displayed. In all cases the scenarios in which access makes sense are captured by the bind operation defined for the monad; for the Maybe monad a value is bound only if it exists, and for the IO monad a value is bound only after the previous operations in the sequence have been performed.


title: Monad (functional programming)

text: With these elements, the programmer composes a sequence of function calls (a "pipeline") with several "bind" operators chained together in an expression. Each function call transforms its input plain-type value, and the bind operator handles the returned monadic value, which is fed into the next step in the sequence.


title: Monad (functional programming)

text: Typically, the bind operator codice_8 may contain code unique to the monad that performs additional computation steps not available in the function received as a parameter. Between each pair of composed function calls, the bind operator can inject into the monadic value codice_2 some additional information that is not accessible within the function codice_9, and pass it along down the pipeline. It can also exert finer control of the flow of execution, for example by calling the function only under some conditions, or executing the function calls in a particular order.


title: Monad (functional programming)

text: One example of a monad is the codice_20 type. Undefined null results are one particular pain point that many procedural languages don't provide specific tools for dealing with, requiring use of the null object pattern or checks to test for invalid values at each operation to handle undefined values. This causes bugs and makes it harder to build robust software that gracefully handles errors. The codice_20 type forces the programmer to deal with these potentially undefined results by explicitly defining the two states of a result: codice_22, or codice_23. For example the programmer might be constructing a parser, which is to return an intermediate result, or else signal a condition which the parser has detected, and which programmer must also handle. With just a little extra functional spice on top, this codice_20 type transforms into a fully-featured monad.


title: Monad (functional programming)

text: In most languages, the Maybe monad is also known as an option type, which is just a type that marks whether or not it contains a value. Typically they are expressed as some kind of enumerated type. In this Rust example we will call it codice_25 and variants of this type can either be a value of generic type codice_26, or the empty variant: codice_23.


title: Monad (functional programming)

text: codice_25 can also be understood as a "wrapping" type, and this is where its connection to monads comes in. In languages with some form of the codice_20 type, there are functions that aid in their use such as composing monadic functions with each other and testing if a codice_20 contains a value.


title: Monad (functional programming)

text: In the following hard-coded example, a codice_20 type is used as a result of functions that may fail, in this case the type returns nothing if there is a divide-by-zero.


title: Monad (functional programming)

text: Monads can compose functions that return codice_20 together. One concrete example to do this might be to have one function take in codice_20s and return a codice_20 such as:


title: Monad (functional programming)

text: chainable_division(chainable_division(Just(2.0), Just(0.0)), Just(1.0)); // inside chainable_division fails, outside chainable_division returns Nothing


title: Monad (functional programming)

text: Having to rewrite functions to take Maybes in this concrete example requires a lot of boilerplate (look at all those codice_37 expressions!). Instead, we can use something called a "bind" operator. (also known as "map", "flatmap", or "shove"). This operation takes a monad and a function that returns a monad and runs the function on the inner value of the passed monad, returning the monad from the function.


title: Monad (functional programming)

text: // Rust example using ".map". maybe_x is passed through 2 functions that return Maybe<Decimal> and Maybe<String> respectively.


title: Monad (functional programming)

text: // As with normal function composition the inputs and outputs of functions feeding into each other should match wrapped types. (i.e. the add_one function should return a Maybe<Decimal> which then can be unwrapped to a Decimal for the decimal_to_string function)


title: Monad (functional programming)

text: In Haskell, there is an operator "bind", or (codice_8) that allows for this monadic composition in a more elegant form similar to function composition.


title: Monad (functional programming)

text: With codice_8 available, codice_40 can be expressed much more succinctly with the help of anonymous functions (i.e. lambdas). Notice in the expression below how the two nested lambdas each operate on the wrapped value in the passed codice_20 monad using the bind operator.


title: Monad (functional programming)

text: What has been shown so far is basically a monad, but to be more concise, the following is a strict list of qualities necessary for a monad as defined by the following section.


title: Monad (functional programming)

text: These are the 3 things necessary to form a monad. Other monads may embody different logical processes, and some may have additional properties, but all of them will have these three similar components.


title: Monad (functional programming)

text: The more common definition for a monad in functional programming, used in the above example, is actually based on a Kleisli triple ⟨T, η, μ⟩ rather than category theory's standard definition. The two constructs turn out to be mathematically equivalent, however, so either definition will yield a valid monad. Given any well-defined, basic types , , a monad consists of three parts:


title: Monad (functional programming)

text: Algebraically, this means any monad both gives rise to a category (called the Kleisli category) "and" a monoid in the category of functors (from values to computations), with monadic composition as a binary operator in the monoid and as identity in the monad.


title: Monad (functional programming)

text: The value of the monad pattern goes beyond merely condensing code and providing a link to mathematical reasoning.


title: Monad (functional programming)

text: Whatever language or default programming paradigm a developer uses, following the monad pattern brings many of the benefits of purely functional programming.


title: Monad (functional programming)

text: By reifying a specific kind of computation, a monad not only encapsulates the tedious details of that computational pattern, but it does so in a declarative way, improving the code's clarity.


title: Monad (functional programming)

text: As monadic values explicitly represent not only computed values, but computed "effects", a monadic expression can be replaced with its value in referentially transparent positions, much like pure expressions can be, allowing for many techniques and optimizations based on rewriting.


title: Monad (functional programming)

text: Typically, programmers will use to chain monadic functions into a sequence, which has led some to describe monads as "programmable semicolons", a reference to how many imperative languages use semicolons to separate statements.


title: Monad (functional programming)

text: However, it should be stressed that monads do not actually order computations; even in languages that use them as central features, simpler function composition can arrange steps within a program.


title: Monad (functional programming)

text: A monad's general utility rather lies in simplifying a program's structure and improving separation of concerns through abstraction.


title: Monad (functional programming)

text: The monad structure can also be seen as a uniquely mathematical and compile time variation on the decorator pattern.


title: Monad (functional programming)

text: Some monads can pass along extra data that is inaccessible to functions, and some even exert finer control over execution, for example only calling a function under certain conditions.


title: Monad (functional programming)

text: Because they let application programmers implement domain logic while offloading boilerplate code onto pre-developed modules, monads can even be considered a tool for aspect-oriented programming.


title: Monad (functional programming)

text: One other noteworthy use for monads is isolating side-effects, like input/output or mutable state, in otherwise purely functional code.


title: Monad (functional programming)

text: Even purely functional languages "can" still implement these "impure" computations without monads, via an intricate mix of function composition and continuation-passing style (CPS) in particular.


title: Monad (functional programming)

text: With monads though, much of this scaffolding can be abstracted away, essentially by taking each recurring pattern in CPS code and bundling it into a distinct monad.


title: Monad (functional programming)

text: If a language does not support monads by default, it is still possible to implement the pattern, often without much difficulty.


title: Monad (functional programming)

text: When translated from category-theory to programming terms, the monad structure is a generic concept and can be defined directly in any language that supports an equivalent feature for bounded polymorphism.


title: Monad (functional programming)

text: A concept's ability to remain agnostic about operational details while working on underlying types is powerful, but the unique features and stringent behavior of monads set them apart from other concepts.


title: Monad (functional programming)

text: Discussions of specific monads will typically focus on solving a narrow implementation problem since a given monad represents a specific computational form.


title: Monad (functional programming)

text: In some situations though, an application can even meet its high-level goals by using appropriate monads within its core logic.


title: Monad (functional programming)

text: The term "monad" in programming actually goes all the way back to the APL and J programming languages, which do tend toward being purely functional. However, in those languages, "monad" is only shorthand for a function taking one parameter (a function with two parameters being a "dyad", and so on).


title: Monad (functional programming)

text: The mathematician Roger Godement was the first to formulate the concept of a monad (dubbing it a "standard construction") in the late 1950s, though the term "monad" that came to dominate was popularized by category-theorist Saunders Mac Lane. The form defined above using , however, was originally described in 1965 by mathematician Heinrich Kleisli in order to prove that any monad could be characterized as an adjunction between two (covariant) functors.


title: Monad (functional programming)

text: Starting in the 1980s, a vague notion of the monad pattern began to surface in the computer science community.


title: Monad (functional programming)

text: According to programming language researcher Philip Wadler, computer scientist John C. Reynolds anticipated several facets of it in the 1970s and early 1980s, when he discussed the value of continuation-passing style, category theory as a rich source for formal semantics, and the type distinction between values and computations.


title: Monad (functional programming)

text: The research language Opal, which was actively designed up until 1990, also effectively based I/O on a monadic type, but the connection was not realized at the time.


title: Monad (functional programming)

text: The computer scientist Eugenio Moggi was the first to explicitly link the monad of category theory to functional programming, in a conference paper in 1989, followed by a more refined journal submission in 1991. In earlier work, several computer scientists had advanced using category theory to provide semantics for the lambda calculus. Moggi's key insight was that a real-world program is not just a function from values to other values, but rather a transformation that forms "computations" on those values. When formalized in category-theoretic terms, this leads to the conclusion that monads are the structure to represent these computations.


title: Monad (functional programming)

text: Several others popularized and built on this idea, including Philip Wadler and Simon Peyton Jones, both of whom were involved in the specification of Haskell. In particular, Haskell used a problematic "lazy stream" model up through v1.2 to reconcile I/O with lazy evaluation, until switching over to a more flexible monadic interface. The Haskell community would go on to apply monads to many problems in functional programming, and in the 2010s, researchers working with Haskell eventually recognized that monads are applicative functors; and that both monads and arrows are monoids.


title: Monad (functional programming)

text: At first, programming with monads was largely confined to Haskell and its derivatives, but as functional programming has influenced other paradigms, many languages have incorporated a monad pattern (in spirit if not in name). Formulations now exist in Scheme, Perl, Python, Racket, Clojure, Scala, F#, and have also been considered for a new ML standard.


title: Monad (functional programming)

text: One benefit of the monad pattern is bringing mathematical precision on the composition of computations.


title: Monad (functional programming)

text: Not only can the monad laws be used to check an instance's validity, but features from related structures (like functors) can be used through subtyping.


title: Monad (functional programming)

text: Returning to the codice_20 example, its components were declared to make up a monad, but no proof was given that it satisfies the monad laws.


title: Monad (functional programming)

text: This can be rectified by plugging the specifics of codice_20 into one side of the general laws, then algebraically building a chain of equalities to reach the other side:


title: Monad (functional programming)

text: Though rarer in computer science, one can use category theory directly, which defines a monad as a functor with two additional natural transformations.


title: Monad (functional programming)

text: So to begin, a structure requires a higher-order function (or "functional") named map to qualify as a functor:


title: Monad (functional programming)

text: This is not always a major issue, however, especially when a monad is derived from a pre-existing functor, whereupon the monad inherits automatically. (For historical reasons, this codice_49 is instead called codice_50 in Haskell.)


title: Monad (functional programming)

text: A monad's first transformation is actually the same from the Kleisli triple, but following the hierarchy of structures closely, it turns out characterizes an applicative functor, an intermediate structure between a monad and a basic functor. In the applicative context, is sometimes referred to as pure but is still the same function. What does differ in this construction is the law must satisfy; as is not defined, the constraint is given in terms of instead:


title: Monad (functional programming)

text: The final leap from applicative functor to monad comes with the second transformation, the join function (in category theory this is a natural transformation usually called ), which "flattens" nested applications of the monad:


title: Monad (functional programming)

text: Regardless of whether a developer defines a direct monad or a Kleisli triple, the underlying structure will be the same, and the forms can be derived from each other easily:


title: Monad (functional programming)

text: In many languages, a list structure comes pre-defined along with some basic features, so a codice_51 type constructor and operator (represented with codice_52 for infix notation) are assumed as already given here.


title: Monad (functional programming)

text: From here, applying a function iteratively with a list comprehension may seem like an easy choice for and converting lists to a full monad.


title: Monad (functional programming)

text: The difficulty with this approach is that expects monadic functions, which in this case will output lists themselves;


title: Monad (functional programming)

text: as more functions are applied, layers of nested lists will accumulate, requiring more than a basic comprehension.


title: Monad (functional programming)

text: However, a procedure to apply any "simple" function over the whole list, in other words , is straightforward:


title: Monad (functional programming)

text: To fully qualify as a monad, only a correct notion of to flatten repeated structure is needed, but for lists, that just means unwrapping an outer list to append the inner ones that contain values:


title: Monad (functional programming)

text: The resulting monad is not only a list, but one that automatically resizes and condenses itself as functions are applied.


title: Monad (functional programming)

text: codice_51 can hold results for all execution paths in an algorithm, then condense itself at each step to "forget" which paths led to which results (a sometimes important distinction from deterministic, exhaustive algorithms).


title: Monad (functional programming)

text: Another benefit is that checks can be embedded in the monad; specific paths can be pruned transparently at their first point of failure, with no need to rewrite functions in the pipeline.


title: Monad (functional programming)

text: For instance, the th complex root of a number should yield distinct complex numbers, but if another th root is then taken of those results, the final values should be identical to the output of the th root.


title: Monad (functional programming)

text: codice_51 completely automates this issue away, condensing the results from each step into a flat, mathematically correct list.


title: Monad (functional programming)

text: Monads present opportunities for interesting techniques beyond just organizing program logic. Monads can lay the groundwork for useful syntactic features while their high-level and mathematical nature enable significant abstraction.


title: Monad (functional programming)

text: Although using openly often makes sense, many programmers prefer a syntax that mimics imperative statements


title: Monad (functional programming)

text: (called "do-notation" in Haskell, "perform-notation" in OCaml, "computation expressions" in F#, and "for comprehension" in Scala). This is only syntactic sugar that disguises a monadic pipeline as a code block; the compiler will then quietly translate these expressions into underlying functional code.


title: Monad (functional programming)

text: Translating the codice_58 function from the codice_20 into Haskell can show this feature in action. A non-monadic version of codice_58 in Haskell looks like this:


title: Monad (functional programming)

text: In monadic Haskell, codice_61 is the standard name for , plus lambda expressions must be handled explicitly, but even with these technicalities, the codice_20 monad makes for a cleaner definition:


title: Monad (functional programming)

text: With computation expressions, a "safe division" function that returns codice_64 for an undefined operand "or" division by zero can be written as:


title: Monad (functional programming)

text: While convenient, a developer should always remember that this block style is purely syntactic and can be replaced with outwardly monadic (or even non-monadic CPS) expressions.


title: Monad (functional programming)

text: Using to express the monadic pipeline can still be clearer in many cases, and some functional programming advocates even argue that since block-style allows novices to carry over habits from imperative programming, it should be avoided by default and only used when obviously superior.


title: Monad (functional programming)

text: Every monad needs a specific implementation that meets the monad laws, but other aspects like the relation to other structures or standard idioms within a language are shared by all monads.


title: Monad (functional programming)

text: As a result, a language or library may provide a general codice_65 interface with function prototypes, subtyping relationships, and other general facts.


title: Monad (functional programming)

text: Besides providing a head-start to development and guaranteeing a new monad inherits features from a supertype (such as functors), checking a monad's design against the interface adds another layer of quality control.


title: Monad (functional programming)

text: The functional can be especially helpful since it works on more than just ad-hoc monadic functions; so long as a monadic function should work analogously to a predefined operator, can be used to instantly "lift" the simpler operator into a monadic one.


title: Monad (functional programming)

text: The process could be taken even one step further by defining codice_58 not just for codice_20, but for the whole codice_65 interface.


title: Monad (functional programming)

text: By doing this, any new monad that matches the structure interface and implements its own will immediately inherit a lifted version of codice_58 too.


title: Monad (functional programming)

text: Another monadic operator that is also useful for analysis is monadic composition (represented as infix codice_72 here), which allows chaining monadic functions in a more mathematical style:


title: Monad (functional programming)

text: With this operator, the monad laws can be written in terms of functions alone, highlighting the correspondence to associativity and existence of an identity:


title: Monad (functional programming)

text: The simplest monad is the Identity monad, which just annotates plain values and functions to satisfy the monad laws:


title: Monad (functional programming)

text: codice_73 does actually have valid uses though, such as providing a base case for recursive monad transformers.


title: Monad (functional programming)

text: Any collection with a proper is already a free monoid, but it turns out that codice_51 is not the only collection that also has a well-defined and qualifies as a monad.


title: Monad (functional programming)

text: One can even mutate codice_51 into these other monadic collections by simply imposing special properties on :


title: Monad (functional programming)

text: As already mentioned, pure code should not have unmanaged side effects, but that does not preclude a program from "explicitly" describing and managing effects.


title: Monad (functional programming)

text: This idea is central to Haskell's IO monad, where an object of type codice_76 can be seen as describing an action to be performed in the world, optionally providing information about the world of type codice_3. An action that provides no information about the world has the type codice_78, "providing" the dummy value codice_79.


title: Monad (functional programming)

text: When a programmer binds an codice_80 value to a function, the function computes the next action to be performed based on the information about the world provided by the previous action (input from users, files, etc.). Most significantly, because the value of the IO monad can only be bound to a function that computes another IO monad, the bind function imposes a discipline of a sequence of actions where the result of an action can only be provided to a function that will compute the next action to perform. This means that actions which do not need to be performed never are, and actions that do need to be performed have a well defined sequence, solving the problem of (IO) actions not being referentially transparent.


title: Monad (functional programming)

text: For example, Haskell has several functions for acting on the wider file system, including one that checks whether a file exists and another that deletes a file.


title: Monad (functional programming)

text: The first is interested in whether a given file really exists, and as a result, outputs a Boolean value within the codice_80 monad.


title: Monad (functional programming)

text: The second function, on the other hand, is only concerned with acting on the file system so the codice_80 container it outputs is empty.


title: Monad (functional programming)

text: codice_80 is not limited just to file I/O though; it even allows for user I/O, and along with imperative syntax sugar, can mimic a typical "Hello, World!" program:


title: Monad (functional programming)

text: Desugared, this translates into the following monadic pipeline (codice_84 in Haskell is just a variant of for when only monadic effects matter and the underlying result can be discarded):


title: Monad (functional programming)

text: Sometimes, a programmer may want to log even more specific, technical data for later profiling or debugging.


title: Monad (functional programming)

text: The Writer monad can handle these tasks by generating auxiliary output that accumulates step-by-step.


title: Monad (functional programming)

text: To show how the monad pattern is not restricted to primarily functional languages, this example implements a codice_85 monad in JavaScript.


title: Monad (functional programming)

text: The underlying output value will live in position 0 of the array, and position 1 will implicitly hold a chain of auxiliary notes:


title: Monad (functional programming)

text: A true monad still requires , but for codice_85, this amounts simply to concatenating a function's output to the monad's linked list:


title: Monad (functional programming)

text: The sample functions can now be chained together using , but defining a version of monadic composition (called codice_89 here) allows applying these functions even more succinctly:


title: Monad (functional programming)

text: The final result is a clean separation of concerns between stepping through computations and logging them to audit later:


title: Monad (functional programming)

text: An environment monad (also called a "reader monad" and a "function monad") allows a computation to depend on values from a shared environment. The monad type constructor maps a type to functions of type , where is the type of the shared environment. The monad functions are:


title: Monad (functional programming)

text: The operation is used to retrieve the current context, while executes a computation in a modified subcontext. As in a state monad, computations in the environment monad may be invoked by simply providing an environment value and applying it to an instance of the monad.


title: Monad (functional programming)

text: Formally, a value in an environment monad is equivalent to a function with an additional, anonymous argument; and are equivalent to the and combinators, respectively, in the SKI combinator calculus.


title: Monad (functional programming)

text: A state monad allows a programmer to attach state information of any type to a calculation. Given any value type, the corresponding type in the state monad is a function which accepts a state, then outputs a new state (of type codice_90) along with a return value (of type codice_91). This is similar to an environment monad, except that it also returns a new state, and thus allows modeling a "mutable" environment.


title: Monad (functional programming)

text: Note that this monad takes a type parameter, the type of the state information. The monad operations are defined as follows:


title: Monad (functional programming)

text: Informally, a state monad of state type maps the type of return values into functions of type formula_3, where is the underlying state. The and function are:


title: Monad (functional programming)

text: From the category theory point of view, a state monad is derived from the adjunction between the product functor and the exponential functor, which exists in any cartesian closed category by definition.


title: Monad (functional programming)

text: A continuation monad with return type maps type into functions of type formula_5. It is used to model continuation-passing style. The return and bind functions are as follows:


title: Monad (functional programming)

text: That is, both functions take in an integer and return another integer. Then we can apply the functions in succession like so:


title: Monad (functional programming)

text: But suppose we are debugging our program, and we would like to add logging messages to codice_92 and codice_93.


title: Monad (functional programming)

text: and a logging message with information about the applied function and all the previously applied functions as the string.


title: Monad (functional programming)

text: Unfortunately, this means we can no longer compose codice_92 and codice_93, as their input type codice_101 is not compatible with their output type codice_102. And although we can again gain composability by modifying the types of each function to be codice_103, this would require us to add boilerplate code to each function to extract the integer from the tuple, which would get tedious as the number of such functions increases.


title: Monad (functional programming)

text: codice_16 takes in an integer and string tuple, then takes in a function (like codice_92) that maps from an integer to an integer and string tuple. Its output is an integer and string tuple, which is the result of applying the input function to the integer within the input integer and string tuple.


title: Monad (functional programming)

text: In this way, we only need to write boilerplate code to extract the integer from the tuple once, in codice_16.


title: Monad (functional programming)

text: Finally, it would be nice to not have to write codice_111 every time we wish to create an empty logging message, where codice_112 is the empty string.


title: Monad (functional programming)

text: codice_102 denotes a pseudo-coded monadic value. codice_16 and codice_61 are analogous to the corresponding functions of the same name.


title: Monad (functional programming)

text: At a mathematical level, some monads have particularly nice properties and are uniquely fitted to certain problems.


title: Monad (functional programming)

text: An additive monad is a monad endowed with an additional closed, associative, binary operator mplus and an identity element under , called mzero.


title: Monad (functional programming)

text: The codice_20 monad can be considered additive, with codice_23 as and a variation on the OR operator as .


title: Monad (functional programming)

text: codice_51 is also an additive monad, with the empty list codice_126 acting as and the concatenation operator codice_52 as .


title: Monad (functional programming)

text: Intuitively, represents a monadic wrapper with no value from an underlying type, but is also considered a "zero" (rather than a "one") since it acts as an absorber for , returning whenever bound to a monadic function.


title: Monad (functional programming)

text: In category-theoretic terms, an additive monad qualifies once as a monoid over monadic functions with (as all monads do), and again over monadic values via .


title: Monad (functional programming)

text: Sometimes, the general outline of a monad may be useful, but no simple pattern recommends one monad or another.


title: Monad (functional programming)

text: This is where a free monad comes in; as a free object in the category of monads, it can represent monadic structure without any specific constraints beyond the monad laws themselves.


title: Monad (functional programming)

text: Just as a free monoid concatenates elements without evaluation, a free monad allows chaining computations with markers to satisfy the type system, but otherwise imposes no deeper semantics itself.


title: Monad (functional programming)

text: For example, by working entirely through the codice_37 and codice_23 markers, the codice_20 monad is in fact a free monad.


title: Monad (functional programming)

text: The codice_51 monad, on the other hand, is not a free monad since it brings extra, specific facts about lists (like ) into its definition.


title: Monad (functional programming)

text: Free monads, however, are "not" restricted to a linked-list like in this example, and can be built around other structures like trees.


title: Monad (functional programming)

text: Using free monads intentionally may seem impractical at first, but their formal nature is particularly well-suited for syntactic problems.


title: Monad (functional programming)

text: A free monad can be used to track syntax and type while leaving semantics for later, and has found use in parsers and interpreters as a result.


title: Monad (functional programming)

text: Others have applied them to more dynamic, operational problems too, such as providing iteratees within a language.


title: Monad (functional programming)

text: Conceptually, if monads represent computations built up from underlying values, then comonads can be seen as reductions back down to values.


title: Monad (functional programming)

text: Monadic code, in a sense, cannot be fully "unpacked"; once a value is wrapped within a monad, it remains quarantined there along with any side-effects (a good thing in purely functional programming).


title: Monad (functional programming)

text: Sometimes though, a problem is more about consuming contextual data, which comonads can model explicitly.


title: Monad (functional programming)

text: Technically, a comonad is the categorical dual of a monad, which loosely means that it will have the same required components, only with the direction of the type signatures "reversed".


title: Monad (functional programming)

text: While operations like are reversed, however, a comonad does "not" reverse functions it acts on, and consequently, comonads are still functors with , not cofunctors.


title: Monad (functional programming)

text: A simple example is the Product comonad, which outputs values based on an input value and shared environment data.


title: Monad (functional programming)

text: In fact, the codice_133 comonad is just the dual of the codice_85 monad and effectively the same as the codice_135 monad (both discussed below).