Content deleted Content added
Christophe3d (talk | contribs) m Fix typo in "derivative" |
m WP:ADOPTYPO boolean -> Boolean |
||
(13 intermediate revisions by 11 users not shown) | |||
Line 3:
{{Use dmy dates|date=April 2019|cs1-dates=y}}
{{Use list-defined references|date=October 2023}}
{{Infobox programming language
| name = RPL
| logo =
| paradigm = [[
| year = 1984<!-- development start --> (1986<!-- first products using it -->)
| designer = [[Hewlett-Packard]]
Line 23 ⟶ 24:
| file_ext =
}}
[[File:HP48G.jpg | thumb | 220x124px | right | HP 48G calculator, uses RPL ]]
'''RPL'''{{ref|rpl_acronym_note_1}} is a [[calculator|handheld calculator]] operating system and application [[programming language]] used on [[Hewlett-Packard]]'s scientific graphing [[Reverse Polish Notation|RPN]] (Reverse Polish Notation) calculators of the [[HP-28 series|HP 28]], [[HP 48 series|48]], [[HP 49 series|49]] and [[HP 50g|50]] series, but it is also usable on non-RPN calculators, such as the [[HP 38G|38]], [[HP 39/40 series|39 and 40]] series. Internally, it was also utilized by the [[HP-17B|17B]], [[HP-18C|18C]], [[HP-19B|19B]] and [[HP-27S|27S]].<ref name="RPLMAN"/>
RPL is a [[structured programming]] language based on RPN, but equally capable of processing [[infix notation|algebraic]] expressions and formulae, implemented as a [[threaded code|threaded interpreter]].<ref name="RPL3"/> RPL has many similarities to [[Forth (programming language)|Forth]], both languages being [[stack-oriented programming language|stack]]-based, as well as the list-based [[LISP]]. Contrary to previous HP RPN calculators, which had a fixed [[4-level RPN|four-level stack]], the [[dynamic RPN stack|dynamic stack]] used by RPL is only limited by available [[random-access memory|RAM]], with the calculator displaying an error message when running out of memory rather than silently dropping arguments off the stack as in fixed-sized RPN stacks.<ref name="Wessman_2016"/>
RPL originated from HP's [[Corvallis, Oregon]] development facility in 1984 as a replacement for the previous practice of implementing the [[operating systems]] of calculators in [[assembly language]].<ref name="RPLMAN"/> The first calculator utilizing it internally was the HP-18C and the first calculator making it available to users was the HP-28C, both from 1986.<ref name="Wickes_1987"/><ref name="RPLMAN"/> The last pocket calculator supporting RPL, the HP 50g, was discontinued in 2015.<ref name="Kuperus_2015_1"/><ref name="Kuperus_2015_2"/><ref name="Wessman_2015"/> However,<!-- an [[Mobile app|app]] is available for [[Android (operating system)|Android]], go49gp[https://play.google.com/store/apps/details?id=o2s.emul.hp49gp&hl=en_US], which emulates the HP 49g+/50g and will run RPL programs. --> multiple emulators that can emulate HP's RPL calculators exist that run on a range of operating systems, and devices, including iOS and Android smartphones. {{anchor|newRPL|DB48X}}There are also a number of community projects to recreate and extend RPL on newer calculators, like [[newRPL]]<ref name="Lapilli_2014_1"/><ref name="Lapilli_2021"/> or [[DB48X]],<ref name="deDinechin_2022"/><ref name="deDinechin_2023"/> which may add features or improve performance.<ref name="Lapilli_2014_2"/>
==Variants==
Line 53 ⟶ 56:
Postfix conditional testing may be accomplished by using the IFT ("if-then") and IFTE ("if-then-else") functions.
IFT and IFTE pop two or three commands off the stack, respectively. The topmost value is evaluated as a
The following example uses the IFT function to pop an object from the bottom of the stack and, if it is equal to 1, replaces it with "One":
Line 163 ⟶ 166:
==References==
{{
<ref name="Joy_2020">{{cite web |url=https://www.hpmuseum.org/forum/showthread.php?mode=linear&tid=15509&pid=135732 |title=The Joy of Programming? |publisher=Museum of HP Calculators |date=2020 |archive-url=https://web.archive.org/web/20211203131528/https://www.hpmuseum.org/forum/showthread.php?mode=linear&tid=15509&pid=135732 |archive-date=2021-12-03}}</ref>
<ref name="HP_4">http://h41268.www4.hp.com/live/index_e.aspx?qid=20709&jumpid=va_r11363_us/en/any/tsg/pl_ot_ob_ds_pd/calculatoremulators_cc/dt{{dead link|date=April 2018 |bot=InternetArchiveBot|fix-attempted=yes}}</ref>
<ref name="HP_7">http://www.calculatrices-hp.com/index.php?page=emulateurs<!-- https://web.archive.org/web/20170917223308/http://www.calculatrices-hp.com/index.php?page=emulateurs --></ref>
<ref name="HP_5">{{cite web |url=http://www.hpmuseum.org/forum/thread-4405-post-39600.html |title=Emulator of HP 50g with #2.16 ROM}}</ref>
<ref name="HP_6">http://www.calculatrices-hp.com/uploads/emulateurs/HP50gVirtualCalculatorSetup_3_1_30.zip<!-- https://web.archive.org/web/20170917095533/http://www.calculatrices-hp.com/uploads/emulateurs/HP50gVirtualCalculatorSetup_3_1_30.zip --></ref>
<ref name="HPJ38">{{cite journal |title=Computation for Handheld Calculators |author-last=Patton |author-first=Charles M. |journal=[[Hewlett-Packard Journal]] |publisher=[[Hewlett-Packard Company]] |___location=Palo Alto, California, USA |date=August 1987 |volume=38 |issue=8 |pages=21–25 |url=http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1987-08.pdf |access-date=2015-09-12 |archive-date=2011-12-06 |archive-url=https://web.archive.org/web/20111206105511/http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1987-08.pdf |url-status=dead }}</ref>
<ref name="Wickes_1988">{{cite conference |title=RPL: A Mathematical<!-- also seen as: "Mathematics". Check actual publication's cover. --> Control Language |author-last=Wickes |author-first=William C. |editor-first=Lawrence P. |editor-last=Forsely |date=1988-10-01 |orig-date=14–18 June 1988 |conference=Proceedings of the 1988 Rochester Forth Conference: Programming Environments |volume=8 |publisher=Institute for Applied Forth Research, Inc., [[University of Rochester]] |___location=Rochester, New York, USA |isbn=978-0-91459308-9 |oclc=839704944
<ref name="Schoorl_2000">{{cite web |title=HP48 Frequently Asked Questions List |author-first=André |author-last=Schoorl |date=2000-04-04 |pages=69 <!-- date=2015 |editor-first=Eric |editor-last=Rechlin | --> |publisher=HP Calculator Archive |orig-date=1997 |url=http://www.hpcalc.org/hp48/docs/faq/48faq-pdf.zip |access-date=2015-09-12}}</ref>
<ref name="FAQ48">{{cite web |title=I've heard the names RPL, Saturn, STAR, GL etc... What are they? - RPL |work=FAQ: 2 of 4 - Hardware, Programs, and Programming |id=8.1. |publisher=comp.sys.hp48 |date=2000-04-14 |version=4.62 |url=http://www.faqs.org/faqs/hp/hp48-faq/part2/ |access-date=2015-09-12}}</ref>
Line 187:
<ref name="Wessman_2015">{{cite web |title=Windows 10 won't allow HP 50g USB drivers to be installed |author-first=Timothy "Tim" James |author-last=Wessman |work=MoHPC - The Museum of HP Calculators |date=2015-12-26 |url=http://www.hpmuseum.org/forum/thread-5386-post-48114.html#pid48114 |access-date=2016-01-01}}</ref>
<ref name="Wessman_2016">{{cite web |title=What to do with stack overflow OBJ->/LIST->? |author-first=Timothy "Tim" James |author-last=Wessman |date=2016-06-21 |orig-date=2016-06-20 |work=MoHPC - The Museum of HP Calculators |url=https://www.hpmuseum.org/forum/printthread.php?tid=6436 |access-date=2023-09-24 |url-status=live |archive-url=https://web.archive.org/web/20230924101041/https://www.hpmuseum.org/forum/printthread.php?tid=6436 |archive-date=2023-09-24}}</ref>
<ref name="deDinechin_2022">{{cite web |title=DB48X on DM42 - RPL runtime for the DM42 calculator, in the spirit of HP48/49/50 |author-first=Christophe |author-last=de Dinechin |author-link=Christophe de Dinechin |work=DB48X |date=2022 |url=https://github.com/c3d/DB48X-on-DM42 |access-date=2023-10-23 |url-status=live |archive-url=https://web.archive.org/web/20231103035417/https://github.com/c3d/DB48X-on-DM42 |archive-date=2023-11-03}}</ref>
<ref name="Lapilli_2014_2">{{cite web |title=N-Queens on 50g (RPL language) |author-first=Claudio Daniel |author-last=Lapilli |work=MoHPC - The Museum of HP Calculators |date=2014-10-31 |url=https://www.hpmuseum.org/forum/thread-2368-post-20947.html?highlight=newRPL#pid20947 |access-date=2023-10-23 |url-status=live |archive-url=https://web.archive.org/web/20231103034655/https://www.hpmuseum.org/forum/thread-2368-post-20947.html?highlight=newRPL#pid20947 |archive-date=2023-11-03}}</ref>
<ref name="Lapilli_2021">{{cite web |title=newRPL Documentation Project |author-first=Claudio Daniel |author-last=Lapilli |work=newRPL |date=2021-07-23 |orig-date=2014 |url=https://newrpl.wiki.hpgcc3.org/doku.php |access-date=2023-10-23 |url-status=live |archive-url=https://web.archive.org/web/20231103034753/https://newrpl.wiki.hpgcc3.org/doku.php |archive-date=2023-11-03}}</ref>
}}
Line 202 ⟶ 207:
* {{cite web |title=RPL |author-first=David G. |author-last=Hicks |date=2013 |orig-date=1995 |publisher=The Museum of HP Calculators (MoHPC) |url=http://www.hpmuseum.org/rpl.htm |access-date=2015-09-12 |url-status=live |archive-url=https://web.archive.org/web/20230930193241/https://www.hpmuseum.org/rpl.htm |archive-date=2023-09-30}}
* {{anchor|RPL/2}}{{cite web |title=RPL/2 - a new Reverse Polish Lisp |author-first=Joël |author-last=Bertrand |date=2015 |orig-date=2009 |url=http://www.rpl2.net |access-date=2015-09-12}} (a GPL licensed RPL clone)
▲* {{anchor|newRPL}}{{cite web |title=newRPL |author-first=Claudio Daniel |author-last=Lapilli |date=2014-01-03 |url=http://hpgcc3.org/projects/newrpl |access-date=2015-09-12}} [https://newrpl.wiki.hpgcc3.org/doku.php?id=start] (an open source RPL derivative for the [[HP 50g]] and [[HP 49g+]], the [[HP 40gs]], [[HP 39gs]] and [[hp 39g+]]<!-- http://www.hpmuseum.org/forum/thread-8290.html --> as well as the [[HP Prime]])
* {{anchor|rpn}}{{cite web |title=rpn - opensource implementation of RPL |author-first=Louis |author-last=Rubet |website=[[GitHub]] |date=2017-07-01 |url=https://github.com/louisrubet/rpn |access-date=2015-09-12}} (Open source implementation of RPL with arbitrary precision)
* {{anchor|MyRPL}}{{cite web |title=MyRPL - Union between HP41 and HP48 languages |author-first=Alvaro Gerardo |author-last=Suárez |date=2018-05-01 |url=https://sim41.webcindario.com |access-date=2018-05-04 |url-status=live |archive-url=https://web.archive.org/web/20231003185922/https://sim41.webcindario.com/ |archive-date=2023-10-03}} (Mixed RPL (HP48) and FOCAL (HP41) language)
▲* {{anchor|DB48X}}{{cite web |title=Reviving Reverse Polish Lisp - Building an open-source HP48-like calculator |author-first=Christophe |author-last=de Dinechin |author-link=Christophe de Dinechin |date=2023-02-03<!-- /04 --> |work=[[FOSDEM]] |url=https://archive.fosdem.org/2023/schedule/event/reversepolishlisp/ |access-date=2023-10-03 |url-status=live |archive-url=https://web.archive.org/web/20231003174447/https://archive.fosdem.org/2023/schedule/event/reversepolishlisp/ |archive-date=2023-10-03}} (NB. An improve derivative of RPL called DB48X for the [[SwissMicros]] [[DM42]] and [[DM32]].)
{{DEFAULTSORT:Rpl (Programming Language)}}
|