CINXE.COM

Functional Programming Research Papers - Academia.edu

<!DOCTYPE html> <html lang="en" xmlns:fb="http://www.facebook.com/2008/fbml" class="wf-loading"> <head prefix="og: https://ogp.me/ns# fb: https://ogp.me/ns/fb# academia: https://ogp.me/ns/fb/academia#"> <meta charset="utf-8"> <meta name=viewport content="width=device-width, initial-scale=1"> <meta rel="search" type="application/opensearchdescription+xml" href="/open_search.xml" title="Academia.edu"> <title>Functional Programming Research Papers - Academia.edu</title> <!-- _ _ _ | | (_) | | __ _ ___ __ _ __| | ___ _ __ ___ _ __ _ ___ __| |_ _ / _` |/ __/ _` |/ _` |/ _ \ '_ ` _ \| |/ _` | / _ \/ _` | | | | | (_| | (_| (_| | (_| | __/ | | | | | | (_| || __/ (_| | |_| | \__,_|\___\__,_|\__,_|\___|_| |_| |_|_|\__,_(_)___|\__,_|\__,_| We're hiring! See https://www.academia.edu/hiring --> <link href="//a.academia-assets.com/images/favicons/favicon-production.ico" rel="shortcut icon" type="image/vnd.microsoft.icon"> <link rel="apple-touch-icon" sizes="57x57" href="//a.academia-assets.com/images/favicons/apple-touch-icon-57x57.png"> <link rel="apple-touch-icon" sizes="60x60" href="//a.academia-assets.com/images/favicons/apple-touch-icon-60x60.png"> <link rel="apple-touch-icon" sizes="72x72" href="//a.academia-assets.com/images/favicons/apple-touch-icon-72x72.png"> <link rel="apple-touch-icon" sizes="76x76" href="//a.academia-assets.com/images/favicons/apple-touch-icon-76x76.png"> <link rel="apple-touch-icon" sizes="114x114" href="//a.academia-assets.com/images/favicons/apple-touch-icon-114x114.png"> <link rel="apple-touch-icon" sizes="120x120" href="//a.academia-assets.com/images/favicons/apple-touch-icon-120x120.png"> <link rel="apple-touch-icon" sizes="144x144" href="//a.academia-assets.com/images/favicons/apple-touch-icon-144x144.png"> <link rel="apple-touch-icon" sizes="152x152" href="//a.academia-assets.com/images/favicons/apple-touch-icon-152x152.png"> <link rel="apple-touch-icon" sizes="180x180" href="//a.academia-assets.com/images/favicons/apple-touch-icon-180x180.png"> <link rel="icon" type="image/png" href="//a.academia-assets.com/images/favicons/favicon-32x32.png" sizes="32x32"> <link rel="icon" type="image/png" href="//a.academia-assets.com/images/favicons/favicon-194x194.png" sizes="194x194"> <link rel="icon" type="image/png" href="//a.academia-assets.com/images/favicons/favicon-96x96.png" sizes="96x96"> <link rel="icon" type="image/png" href="//a.academia-assets.com/images/favicons/android-chrome-192x192.png" sizes="192x192"> <link rel="icon" type="image/png" href="//a.academia-assets.com/images/favicons/favicon-16x16.png" sizes="16x16"> <link rel="manifest" href="//a.academia-assets.com/images/favicons/manifest.json"> <meta name="msapplication-TileColor" content="#2b5797"> <meta name="msapplication-TileImage" content="//a.academia-assets.com/images/favicons/mstile-144x144.png"> <meta name="theme-color" content="#ffffff"> <script> window.performance && window.performance.measure && window.performance.measure("Time To First Byte", "requestStart", "responseStart"); </script> <script> (function() { if (!window.URLSearchParams || !window.history || !window.history.replaceState) { return; } var searchParams = new URLSearchParams(window.location.search); var paramsToDelete = [ 'fs', 'sm', 'swp', 'iid', 'nbs', 'rcc', // related content category 'rcpos', // related content carousel position 'rcpg', // related carousel page 'rchid', // related content hit id 'f_ri', // research interest id, for SEO tracking 'f_fri', // featured research interest, for SEO tracking (param key without value) 'f_rid', // from research interest directory for SEO tracking 'f_loswp', // from research interest pills on LOSWP sidebar for SEO tracking 'rhid', // referrring hit id ]; if (paramsToDelete.every((key) => searchParams.get(key) === null)) { return; } paramsToDelete.forEach((key) => { searchParams.delete(key); }); var cleanUrl = new URL(window.location.href); cleanUrl.search = searchParams.toString(); history.replaceState({}, document.title, cleanUrl); })(); </script> <script async src="https://www.googletagmanager.com/gtag/js?id=G-5VKX33P2DS"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-5VKX33P2DS', { cookie_domain: 'academia.edu', send_page_view: false, }); gtag('event', 'page_view', { 'controller': "by_tag", 'action': "show_one", 'controller_action': 'by_tag#show_one', 'logged_in': 'false', 'edge': 'unknown', // Send nil if there is no A/B test bucket, in case some records get logged // with missing data - that way we can distinguish between the two cases. // ab_test_bucket should be of the form <ab_test_name>:<bucket> 'ab_test_bucket': null, }) </script> <script type="text/javascript"> window.sendUserTiming = function(timingName) { if (!(window.performance && window.performance.measure)) return; var entries = window.performance.getEntriesByName(timingName, "measure"); if (entries.length !== 1) return; var timingValue = Math.round(entries[0].duration); gtag('event', 'timing_complete', { name: timingName, value: timingValue, event_category: 'User-centric', }); }; window.sendUserTiming("Time To First Byte"); </script> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="Eq69drWakL7KGvmoidqs23hVdR54DouQR14ZLNnss2ev+S3oRyj7q/G6iZlMYACp/6VnqiivbHicaPm1JOTv5g==" /> <link href="/Documents/in/Functional_Programming?after=50%2C3142608" rel="next" /><link crossorigin="" href="https://fonts.gstatic.com/" rel="preconnect" /><link href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&amp;family=Gupter:wght@400;500;700&amp;family=IBM+Plex+Mono:wght@300;400&amp;family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20,400,0,0&amp;display=swap" rel="stylesheet" /><link rel="stylesheet" media="all" href="//a.academia-assets.com/assets/design_system/common-10fa40af19d25203774df2d4a03b9b5771b45109c2304968038e88a81d1215c5.css" /> <meta name="description" content="View Functional Programming Research Papers on Academia.edu for free." /> <meta name="google-site-verification" content="bKJMBZA7E43xhDOopFZkssMMkBRjvYERV-NaN4R6mrs" /> <script> var $controller_name = 'by_tag'; var $action_name = "show_one"; var $rails_env = 'production'; var $app_rev = '1bba2257721fc9a617e8a7d41e91ce5a46d8bfc4'; var $domain = 'academia.edu'; var $app_host = "academia.edu"; var $asset_host = "academia-assets.com"; var $start_time = new Date().getTime(); var $recaptcha_key = "6LdxlRMTAAAAADnu_zyLhLg0YF9uACwz78shpjJB"; var $recaptcha_invisible_key = "6Lf3KHUUAAAAACggoMpmGJdQDtiyrjVlvGJ6BbAj"; var $disableClientRecordHit = false; </script> <script> window.Aedu = { hit_data: null }; window.Aedu.SiteStats = {"premium_universities_count":15252,"monthly_visitors":"120 million","monthly_visitor_count":120260779,"monthly_visitor_count_in_millions":120,"user_count":278640353,"paper_count":55203019,"paper_count_in_millions":55,"page_count":432000000,"page_count_in_millions":432,"pdf_count":16500000,"pdf_count_in_millions":16}; window.Aedu.serverRenderTime = new Date(1734013453000); window.Aedu.timeDifference = new Date().getTime() - 1734013453000; window.Aedu.isUsingCssV1 = false; window.Aedu.enableLocalization = true; window.Aedu.activateFullstory = false; window.Aedu.serviceAvailability = { status: {"attention_db":"on","bibliography_db":"on","contacts_db":"on","email_db":"on","indexability_db":"on","mentions_db":"on","news_db":"on","notifications_db":"on","offsite_mentions_db":"on","redshift":"on","redshift_exports_db":"on","related_works_db":"on","ring_db":"on","user_tests_db":"on"}, serviceEnabled: function(service) { return this.status[service] === "on"; }, readEnabled: function(service) { return this.serviceEnabled(service) || this.status[service] === "read_only"; }, }; window.Aedu.viewApmTrace = function() { // Check if x-apm-trace-id meta tag is set, and open the trace in APM // in a new window if it is. var apmTraceId = document.head.querySelector('meta[name="x-apm-trace-id"]'); if (apmTraceId) { var traceId = apmTraceId.content; // Use trace ID to construct URL, an example URL looks like: // https://app.datadoghq.com/apm/traces?query=trace_id%31298410148923562634 var apmUrl = 'https://app.datadoghq.com/apm/traces?query=trace_id%3A' + traceId; window.open(apmUrl, '_blank'); } }; </script> <!--[if lt IE 9]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js"></script> <![endif]--> <link href="https://fonts.googleapis.com/css?family=Roboto:100,100i,300,300i,400,400i,500,500i,700,700i,900,900i" rel="stylesheet"> <link href="//maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet"> <link rel="stylesheet" media="all" href="//a.academia-assets.com/assets/libraries-a9675dcb01ec4ef6aa807ba772c7a5a00c1820d3ff661c1038a20f80d06bb4e4.css" /> <link rel="stylesheet" media="all" href="//a.academia-assets.com/assets/academia-0fb6fc03c471832908791ad7ddba619b6165b3ccf7ae0f65cf933f34b0b660a7.css" /> <link rel="stylesheet" media="all" href="//a.academia-assets.com/assets/design_system_legacy-056a9113b9a0f5343d013b29ee1929d5a18be35fdcdceb616600b4db8bd20054.css" /> <script src="//a.academia-assets.com/assets/webpack_bundles/runtime-bundle-005434038af4252ca37c527588411a3d6a0eabb5f727fac83f8bbe7fd88d93bb.js"></script> <script src="//a.academia-assets.com/assets/webpack_bundles/webpack_libraries_and_infrequently_changed.wjs-bundle-2eebbf16f94e23df09908fc0eb355e7d088296bc7bbbbe96567743814345fdd9.js"></script> <script src="//a.academia-assets.com/assets/webpack_bundles/core_webpack.wjs-bundle-086d9084944b0c8a793ea96ac398b4180db6177bb674e9655034fb25e834c8b4.js"></script> <script src="//a.academia-assets.com/assets/webpack_bundles/sentry.wjs-bundle-5fe03fddca915c8ba0f7edbe64c194308e8ce5abaed7bffe1255ff37549c4808.js"></script> <script> jade = window.jade || {}; jade.helpers = window.$h; jade._ = window._; </script> <!-- Google Tag Manager --> <script id="tag-manager-head-root">(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer_old','GTM-5G9JF7Z');</script> <!-- End Google Tag Manager --> <script> window.gptadslots = []; window.googletag = window.googletag || {}; window.googletag.cmd = window.googletag.cmd || []; </script> <script type="text/javascript"> // TODO(jacob): This should be defined, may be rare load order problem. // Checking if null is just a quick fix, will default to en if unset. // Better fix is to run this immedietely after I18n is set. if (window.I18n != null) { I18n.defaultLocale = "en"; I18n.locale = "en"; I18n.fallbacks = true; } </script> <link rel="canonical" href="https://www.academia.edu/Documents/in/Functional_Programming" /> </head> <!--[if gte IE 9 ]> <body class='ie ie9 c-by_tag a-show_one logged_out u-bgColorWhite'> <![endif]--> <!--[if !(IE) ]><!--> <body class='c-by_tag a-show_one logged_out u-bgColorWhite'> <!--<![endif]--> <div id="fb-root"></div><script>window.fbAsyncInit = function() { FB.init({ appId: "2369844204", version: "v8.0", status: true, cookie: true, xfbml: true }); // Additional initialization code. if (window.InitFacebook) { // facebook.ts already loaded, set it up. window.InitFacebook(); } else { // Set a flag for facebook.ts to find when it loads. window.academiaAuthReadyFacebook = true; } };</script><script>window.fbAsyncLoad = function() { // Protection against double calling of this function if (window.FB) { return; } (function(d, s, id){ var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) {return;} js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); } if (!window.defer_facebook) { // Autoload if not deferred window.fbAsyncLoad(); } else { // Defer loading by 5 seconds setTimeout(function() { window.fbAsyncLoad(); }, 5000); }</script> <div id="google-root"></div><script>window.loadGoogle = function() { if (window.InitGoogle) { // google.ts already loaded, set it up. window.InitGoogle("331998490334-rsn3chp12mbkiqhl6e7lu2q0mlbu0f1b"); } else { // Set a flag for google.ts to use when it loads. window.GoogleClientID = "331998490334-rsn3chp12mbkiqhl6e7lu2q0mlbu0f1b"; } };</script><script>window.googleAsyncLoad = function() { // Protection against double calling of this function (function(d) { var js; var id = 'google-jssdk'; var ref = d.getElementsByTagName('script')[0]; if (d.getElementById(id)) { return; } js = d.createElement('script'); js.id = id; js.async = true; js.onload = loadGoogle; js.src = "https://accounts.google.com/gsi/client" ref.parentNode.insertBefore(js, ref); }(document)); } if (!window.defer_google) { // Autoload if not deferred window.googleAsyncLoad(); } else { // Defer loading by 5 seconds setTimeout(function() { window.googleAsyncLoad(); }, 5000); }</script> <div id="tag-manager-body-root"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-5G9JF7Z" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!-- Event listeners for analytics --> <script> window.addEventListener('load', function() { if (document.querySelector('input[name="commit"]')) { document.querySelector('input[name="commit"]').addEventListener('click', function() { gtag('event', 'click', { event_category: 'button', event_label: 'Log In' }) }) } }); </script> </div> <script>var _comscore = _comscore || []; _comscore.push({ c1: "2", c2: "26766707" }); (function() { var s = document.createElement("script"), el = document.getElementsByTagName("script")[0]; s.async = true; s.src = (document.location.protocol == "https:" ? "https://sb" : "http://b") + ".scorecardresearch.com/beacon.js"; el.parentNode.insertBefore(s, el); })();</script><img src="https://sb.scorecardresearch.com/p?c1=2&amp;c2=26766707&amp;cv=2.0&amp;cj=1" style="position: absolute; visibility: hidden" /> <div id='react-modal'></div> <div class='DesignSystem'> <a class='u-showOnFocus' href='#site'> Skip to main content </a> </div> <div id="upgrade_ie_banner" style="display: none;"><p>Academia.edu no longer supports Internet Explorer.</p><p>To browse Academia.edu and the wider internet faster and more securely, please take a few seconds to&nbsp;<a href="https://www.academia.edu/upgrade-browser">upgrade your browser</a>.</p></div><script>// Show this banner for all versions of IE if (!!window.MSInputMethodContext || /(MSIE)/.test(navigator.userAgent)) { document.getElementById('upgrade_ie_banner').style.display = 'block'; }</script> <div class="DesignSystem bootstrap ShrinkableNav no-sm no-md"><div class="navbar navbar-default main-header"><div class="container-wrapper" id="main-header-container"><div class="container"><div class="navbar-header"><div class="nav-left-wrapper u-mt0x"><div class="nav-logo"><a data-main-header-link-target="logo_home" href="https://www.academia.edu/"><img class="visible-xs-inline-block" style="height: 24px;" alt="Academia.edu" src="//a.academia-assets.com/images/academia-logo-redesign-2015-A.svg" width="24" height="24" /><img width="145.2" height="18" class="hidden-xs" style="height: 24px;" alt="Academia.edu" src="//a.academia-assets.com/images/academia-logo-redesign-2015.svg" /></a></div><div class="nav-search"><div class="SiteSearch-wrapper select2-no-default-pills"><form class="js-SiteSearch-form DesignSystem" action="https://www.academia.edu/search" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><i class="SiteSearch-icon fa fa-search u-fw700 u-positionAbsolute u-tcGrayDark"></i><input class="js-SiteSearch-form-input SiteSearch-form-input form-control" data-main-header-click-target="search_input" name="q" placeholder="Search" type="text" value="" /></form></div></div></div><div class="nav-right-wrapper pull-right"><ul class="NavLinks js-main-nav list-unstyled"><li class="NavLinks-link"><a class="js-header-login-url Button Button--inverseGray Button--sm u-mb4x" id="nav_log_in" rel="nofollow" href="https://www.academia.edu/login">Log In</a></li><li class="NavLinks-link u-p0x"><a class="Button Button--inverseGray Button--sm u-mb4x" rel="nofollow" href="https://www.academia.edu/signup">Sign Up</a></li></ul><button class="hidden-lg hidden-md hidden-sm u-ml4x navbar-toggle collapsed" data-target=".js-mobile-header-links" data-toggle="collapse" type="button"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></button></div></div><div class="collapse navbar-collapse js-mobile-header-links"><ul class="nav navbar-nav"><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/login">Log In</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/signup">Sign Up</a></li><li class="u-borderColorGrayLight u-borderBottom1 js-mobile-nav-expand-trigger"><a href="#">more&nbsp<span class="caret"></span></a></li><li><ul class="js-mobile-nav-expand-section nav navbar-nav u-m0x collapse"><li class="u-borderColorGrayLight u-borderBottom1"><a rel="false" href="https://www.academia.edu/about">About</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/press">Press</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="false" href="https://www.academia.edu/documents">Papers</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/terms">Terms</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/privacy">Privacy</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/copyright">Copyright</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://www.academia.edu/hiring"><i class="fa fa-briefcase"></i>&nbsp;We're Hiring!</a></li><li class="u-borderColorGrayLight u-borderBottom1"><a rel="nofollow" href="https://support.academia.edu/"><i class="fa fa-question-circle"></i>&nbsp;Help Center</a></li><li class="js-mobile-nav-collapse-trigger u-borderColorGrayLight u-borderBottom1 dropup" style="display:none"><a href="#">less&nbsp<span class="caret"></span></a></li></ul></li></ul></div></div></div><script>(function(){ var $moreLink = $(".js-mobile-nav-expand-trigger"); var $lessLink = $(".js-mobile-nav-collapse-trigger"); var $section = $('.js-mobile-nav-expand-section'); $moreLink.click(function(ev){ ev.preventDefault(); $moreLink.hide(); $lessLink.show(); $section.collapse('show'); }); $lessLink.click(function(ev){ ev.preventDefault(); $moreLink.show(); $lessLink.hide(); $section.collapse('hide'); }); })() if ($a.is_logged_in() || false) { new Aedu.NavigationController({ el: '.js-main-nav', showHighlightedNotification: false }); } else { $(".js-header-login-url").attr("href", $a.loginUrlWithRedirect()); } Aedu.autocompleteSearch = new AutocompleteSearch({el: '.js-SiteSearch-form'});</script></div></div> <div id='site' class='fixed'> <div id="content" class="clearfix"> <script>document.addEventListener('DOMContentLoaded', function(){ var $dismissible = $(".dismissible_banner"); $dismissible.click(function(ev) { $dismissible.hide(); }); });</script> <div class="DesignSystem" style="margin-top:-40px"><div class="PageHeader"><div class="container"><div class="row"><style type="text/css">.sor-abstract { display: -webkit-box; overflow: hidden; text-overflow: ellipsis; -webkit-line-clamp: 3; -webkit-box-orient: vertical; }</style><div class="col-xs-12 clearfix"><div class="u-floatLeft"><h1 class="PageHeader-title u-m0x u-fs30">Functional Programming</h1><div class="u-tcGrayDark">12,938&nbsp;Followers</div><div class="u-tcGrayDark u-mt2x">Recent papers in&nbsp;<b>Functional Programming</b></div></div></div></div></div></div><div class="TabbedNavigation"><div class="container"><div class="row"><div class="col-xs-12 clearfix"><ul class="nav u-m0x u-p0x list-inline u-displayFlex"><li class="active"><a href="https://www.academia.edu/Documents/in/Functional_Programming">Top Papers</a></li><li><a href="https://www.academia.edu/Documents/in/Functional_Programming/MostCited">Most Cited Papers</a></li><li><a href="https://www.academia.edu/Documents/in/Functional_Programming/MostDownloaded">Most Downloaded Papers</a></li><li><a href="https://www.academia.edu/Documents/in/Functional_Programming/MostRecent">Newest Papers</a></li><li><a class="" href="https://www.academia.edu/People/Functional_Programming">People</a></li></ul></div><style type="text/css">ul.nav{flex-direction:row}@media(max-width: 567px){ul.nav{flex-direction:column}.TabbedNavigation li{max-width:100%}.TabbedNavigation li.active{background-color:var(--background-grey, #dddde2)}.TabbedNavigation li.active:before,.TabbedNavigation li.active:after{display:none}}</style></div></div></div><div class="container"><div class="row"><div class="col-xs-12"><div class="u-displayFlex"><div class="u-flexGrow1"><div class="works"><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_49716361" data-work_id="49716361" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/49716361/Learning_how_to_program">Learning how to program</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Automated software engineering has long been a goal of arti cial intelligence. There has been slow but steady progress towards understanding the processes underlying program synthesis and modi cation. One signi cant observation that came... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_49716361" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Automated software engineering has long been a goal of arti cial intelligence. There has been slow but steady progress towards understanding the processes underlying program synthesis and modi cation. One signi cant observation that came out of Richards and Waters 15] Software Apprentice Project was that programmers repeatedly use certain program constructs or cliches to solve a variety of programming tasks. Richards developed Plan Description Language (PDL) to capture the association between various code fragments and the functional goals that they serve. Another development has been the understanding of the relationship between physical devices and programs. This understanding asserts that causal theories (such as Functional Representation 17]) developed for reasoning with physical systems can be applied to reason with programs. This observation led to the development of debugging and program understanding tools 2]. Here, we outline a framework for functional representation of programs which also allows us to automatically learn new programming constructs and to re ne existing programs so as to achieve a more functionally complete program.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/49716361" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="cc2a6aa2eea6fdb263ab0b3d6e5228e9" rel="nofollow" data-download="{&quot;attachment_id&quot;:67983154,&quot;asset_id&quot;:49716361,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/67983154/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="262304" href="https://jmu.academia.edu/MAfzalUpal">M. Afzal Upal</a><script data-card-contents-for-user="262304" type="text/json">{"id":262304,"first_name":"M. Afzal","last_name":"Upal","domain_name":"jmu","page_name":"MAfzalUpal","display_name":"M. Afzal Upal","profile_url":"https://jmu.academia.edu/MAfzalUpal?f_ri=454","photo":"https://0.academia-photos.com/262304/8762812/18215301/s65_afzal.upal.jpg"}</script></span></span></li><li class="js-paper-rank-work_49716361 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="49716361"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 49716361, container: ".js-paper-rank-work_49716361", }); });</script></li><li class="js-percentile-work_49716361 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 49716361; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_49716361"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_49716361 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="49716361"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 49716361; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=49716361]").text(description); $(".js-view-count-work_49716361").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_49716361").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="49716361"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">10</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="465" href="https://www.academia.edu/Documents/in/Artificial_Intelligence">Artificial Intelligence</a>,&nbsp;<script data-card-contents-for-ri="465" type="text/json">{"id":465,"name":"Artificial Intelligence","url":"https://www.academia.edu/Documents/in/Artificial_Intelligence?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="31379" href="https://www.academia.edu/Documents/in/Reverse_Engineering">Reverse Engineering</a><script data-card-contents-for-ri="31379" type="text/json">{"id":31379,"name":"Reverse Engineering","url":"https://www.academia.edu/Documents/in/Reverse_Engineering?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=49716361]'), work: {"id":49716361,"title":"Learning how to program","created_at":"2021-07-10T16:49:47.423-07:00","url":"https://www.academia.edu/49716361/Learning_how_to_program?f_ri=454","dom_id":"work_49716361","summary":"Automated software engineering has long been a goal of arti cial intelligence. There has been slow but steady progress towards understanding the processes underlying program synthesis and modi cation. One signi cant observation that came out of Richards and Waters 15] Software Apprentice Project was that programmers repeatedly use certain program constructs or cliches to solve a variety of programming tasks. Richards developed Plan Description Language (PDL) to capture the association between various code fragments and the functional goals that they serve. Another development has been the understanding of the relationship between physical devices and programs. This understanding asserts that causal theories (such as Functional Representation 17]) developed for reasoning with physical systems can be applied to reason with programs. This observation led to the development of debugging and program understanding tools 2]. Here, we outline a framework for functional representation of programs which also allows us to automatically learn new programming constructs and to re ne existing programs so as to achieve a more functionally complete program.","downloadable_attachments":[{"id":67983154,"asset_id":49716361,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":262304,"first_name":"M. Afzal","last_name":"Upal","domain_name":"jmu","page_name":"MAfzalUpal","display_name":"M. Afzal Upal","profile_url":"https://jmu.academia.edu/MAfzalUpal?f_ri=454","photo":"https://0.academia-photos.com/262304/8762812/18215301/s65_afzal.upal.jpg"}],"research_interests":[{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":465,"name":"Artificial Intelligence","url":"https://www.academia.edu/Documents/in/Artificial_Intelligence?f_ri=454","nofollow":false},{"id":31379,"name":"Reverse Engineering","url":"https://www.academia.edu/Documents/in/Reverse_Engineering?f_ri=454","nofollow":false},{"id":43774,"name":"Learning","url":"https://www.academia.edu/Documents/in/Learning?f_ri=454"},{"id":49419,"name":"Problem Solving","url":"https://www.academia.edu/Documents/in/Problem_Solving?f_ri=454"},{"id":98569,"name":"Computer Languages","url":"https://www.academia.edu/Documents/in/Computer_Languages?f_ri=454"},{"id":313046,"name":"Encoding","url":"https://www.academia.edu/Documents/in/Encoding?f_ri=454"},{"id":879152,"name":"Debugging","url":"https://www.academia.edu/Documents/in/Debugging?f_ri=454"},{"id":1302340,"name":"Electrical and Computer Engineering","url":"https://www.academia.edu/Documents/in/Electrical_and_Computer_Engineering?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_76471015" data-work_id="76471015" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/76471015/The_Iris_architecture_and_implementation">The Iris architecture and implementation</a></div></div><div class="u-pb4x u-mt3x"></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/76471015" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="4ec5697e810101b45c3cf3d859bbe465" rel="nofollow" data-download="{&quot;attachment_id&quot;:84169383,&quot;asset_id&quot;:76471015,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/84169383/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="127544401" href="https://independent.academia.edu/WaqarHasan10">Waqar Hasan</a><script data-card-contents-for-user="127544401" type="text/json">{"id":127544401,"first_name":"Waqar","last_name":"Hasan","domain_name":"independent","page_name":"WaqarHasan10","display_name":"Waqar Hasan","profile_url":"https://independent.academia.edu/WaqarHasan10?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_76471015 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="76471015"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 76471015, container: ".js-paper-rank-work_76471015", }); });</script></li><li class="js-percentile-work_76471015 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 76471015; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_76471015"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_76471015 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="76471015"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 76471015; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=76471015]").text(description); $(".js-view-count-work_76471015").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_76471015").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="76471015"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">14</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="453" href="https://www.academia.edu/Documents/in/Object_Oriented_Programming">Object Oriented Programming</a>,&nbsp;<script data-card-contents-for-ri="453" type="text/json">{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="2349" href="https://www.academia.edu/Documents/in/Semantics">Semantics</a><script data-card-contents-for-ri="2349" type="text/json">{"id":2349,"name":"Semantics","url":"https://www.academia.edu/Documents/in/Semantics?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=76471015]'), work: {"id":76471015,"title":"The Iris architecture and implementation","created_at":"2022-04-14T17:31:31.049-07:00","url":"https://www.academia.edu/76471015/The_Iris_architecture_and_implementation?f_ri=454","dom_id":"work_76471015","summary":null,"downloadable_attachments":[{"id":84169383,"asset_id":76471015,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":127544401,"first_name":"Waqar","last_name":"Hasan","domain_name":"independent","page_name":"WaqarHasan10","display_name":"Waqar Hasan","profile_url":"https://independent.academia.edu/WaqarHasan10?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":2349,"name":"Semantics","url":"https://www.academia.edu/Documents/in/Semantics?f_ri=454","nofollow":false},{"id":2482,"name":"Database Systems","url":"https://www.academia.edu/Documents/in/Database_Systems?f_ri=454"},{"id":8968,"name":"Productivity","url":"https://www.academia.edu/Documents/in/Productivity?f_ri=454"},{"id":45090,"name":"Database Management Systems","url":"https://www.academia.edu/Documents/in/Database_Management_Systems?f_ri=454"},{"id":95153,"name":"DATABASE MANAGEMENT SYSTEM","url":"https://www.academia.edu/Documents/in/DATABASE_MANAGEMENT_SYSTEM?f_ri=454"},{"id":181022,"name":"Data Structures","url":"https://www.academia.edu/Documents/in/Data_Structures?f_ri=454"},{"id":191487,"name":"Kernel","url":"https://www.academia.edu/Documents/in/Kernel?f_ri=454"},{"id":349137,"name":"Data Models","url":"https://www.academia.edu/Documents/in/Data_Models?f_ri=454"},{"id":364962,"name":"Data Model","url":"https://www.academia.edu/Documents/in/Data_Model?f_ri=454"},{"id":619723,"name":"Iris","url":"https://www.academia.edu/Documents/in/Iris?f_ri=454"},{"id":1307607,"name":"Database System","url":"https://www.academia.edu/Documents/in/Database_System?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_15016160 coauthored" data-work_id="15016160" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/15016160/Haskells_overlooked_object_system">Haskell&#39;s overlooked object system</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Haskell provides type-class-bounded and parametric polymorphism as opposed to subtype polymorphism,of object-oriented languages such as Java and OCaml. It is a contentious question whether Haskell 98 without extensions, or with common... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_15016160" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Haskell provides type-class-bounded and parametric polymorphism as opposed to subtype polymorphism,of object-oriented languages such as Java and OCaml. It is a contentious question whether Haskell 98 without extensions, or with common extensions, or with new extensions can fully support conventional object-oriented programming,with encapsulation, mutable state, inheritance, overriding, statically checked implicit and explicit subtyping, and so on. In a first</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/15016160" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="ee70107d3b9aa0a688265f56f9fdd081" rel="nofollow" data-download="{&quot;attachment_id&quot;:38507659,&quot;asset_id&quot;:15016160,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/38507659/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="34020170" href="https://independent.academia.edu/RalfLaemmel">Ralf Laemmel</a><script data-card-contents-for-user="34020170" type="text/json">{"id":34020170,"first_name":"Ralf","last_name":"Laemmel","domain_name":"independent","page_name":"RalfLaemmel","display_name":"Ralf Laemmel","profile_url":"https://independent.academia.edu/RalfLaemmel?f_ri=454","photo":"https://gravatar.com/avatar/f7240cb74afe8869954d5f7094475c74?s=65"}</script></span></span><span class="u-displayInlineBlock InlineList-item-text">&nbsp;and&nbsp;<span class="u-textDecorationUnderline u-clickable InlineList-item-text js-work-more-authors-15016160">+1</span><div class="hidden js-additional-users-15016160"><div><span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a href="https://independent.academia.edu/OlegKiselyov">Oleg Kiselyov</a></span></div></div></span><script>(function(){ var popoverSettings = { el: $('.js-work-more-authors-15016160'), placement: 'bottom', hide_delay: 200, html: true, content: function(){ return $('.js-additional-users-15016160').html(); } } new HoverPopover(popoverSettings); })();</script></li><li class="js-paper-rank-work_15016160 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="15016160"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 15016160, container: ".js-paper-rank-work_15016160", }); });</script></li><li class="js-percentile-work_15016160 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 15016160; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_15016160"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_15016160 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="15016160"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 15016160; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=15016160]").text(description); $(".js-view-count-work_15016160").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_15016160").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="15016160"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">9</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="453" href="https://www.academia.edu/Documents/in/Object_Oriented_Programming">Object Oriented Programming</a>,&nbsp;<script data-card-contents-for-ri="453" type="text/json">{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="3855" href="https://www.academia.edu/Documents/in/Polymorphism">Polymorphism</a>,&nbsp;<script data-card-contents-for-ri="3855" type="text/json">{"id":3855,"name":"Polymorphism","url":"https://www.academia.edu/Documents/in/Polymorphism?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="64025" href="https://www.academia.edu/Documents/in/Language_Design">Language Design</a><script data-card-contents-for-ri="64025" type="text/json">{"id":64025,"name":"Language Design","url":"https://www.academia.edu/Documents/in/Language_Design?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=15016160]'), work: {"id":15016160,"title":"Haskell's overlooked object system","created_at":"2015-08-18T12:13:52.168-07:00","url":"https://www.academia.edu/15016160/Haskells_overlooked_object_system?f_ri=454","dom_id":"work_15016160","summary":"Haskell provides type-class-bounded and parametric polymorphism as opposed to subtype polymorphism,of object-oriented languages such as Java and OCaml. It is a contentious question whether Haskell 98 without extensions, or with common extensions, or with new extensions can fully support conventional object-oriented programming,with encapsulation, mutable state, inheritance, overriding, statically checked implicit and explicit subtyping, and so on. In a first","downloadable_attachments":[{"id":38507659,"asset_id":15016160,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":34020170,"first_name":"Ralf","last_name":"Laemmel","domain_name":"independent","page_name":"RalfLaemmel","display_name":"Ralf Laemmel","profile_url":"https://independent.academia.edu/RalfLaemmel?f_ri=454","photo":"https://gravatar.com/avatar/f7240cb74afe8869954d5f7094475c74?s=65"},{"id":34129842,"first_name":"Oleg","last_name":"Kiselyov","domain_name":"independent","page_name":"OlegKiselyov","display_name":"Oleg Kiselyov","profile_url":"https://independent.academia.edu/OlegKiselyov?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":3855,"name":"Polymorphism","url":"https://www.academia.edu/Documents/in/Polymorphism?f_ri=454","nofollow":false},{"id":64025,"name":"Language Design","url":"https://www.academia.edu/Documents/in/Language_Design?f_ri=454","nofollow":false},{"id":332021,"name":"Multiple Inheritance","url":"https://www.academia.edu/Documents/in/Multiple_Inheritance?f_ri=454"},{"id":371541,"name":"Type System","url":"https://www.academia.edu/Documents/in/Type_System?f_ri=454"},{"id":798767,"name":"Type Inference","url":"https://www.academia.edu/Documents/in/Type_Inference?f_ri=454"},{"id":1121048,"name":"Object Oriented","url":"https://www.academia.edu/Documents/in/Object_Oriented?f_ri=454"},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_34797723" data-work_id="34797723" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/34797723/Generic_programming_with_C_concepts_and_Haskell_type_classes_a_comparison">Generic programming with C++ concepts and Haskell type classes—a comparison</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Earlier studies have introduced a list of high-level evaluation criteria to assess how well a language supports generic programming. Languages that meet all criteria include Haskell because of its type classes and C++ with the concept... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_34797723" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Earlier studies have introduced a list of high-level evaluation criteria to assess how well a language supports generic programming. Languages that meet all criteria include Haskell because of its type classes and C++ with the concept feature. We refine these criteria into a taxonomy that captures commonalities and differences between type classes in Haskell and concepts in C++ and discuss which differences are incidental and which ones are due to other language features. The taxonomy allows for an improved understanding of language support for generic programming, and the comparison is useful for the ongoing discussions among language designers and users of both languages.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/34797723" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="8bd971aa09c8b4032254ebc9873a5e4b" rel="nofollow" data-download="{&quot;attachment_id&quot;:54657131,&quot;asset_id&quot;:34797723,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/54657131/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="59048781" href="https://chalmers.academia.edu/PatrikJansson">Patrik Jansson</a><script data-card-contents-for-user="59048781" type="text/json">{"id":59048781,"first_name":"Patrik","last_name":"Jansson","domain_name":"chalmers","page_name":"PatrikJansson","display_name":"Patrik Jansson","profile_url":"https://chalmers.academia.edu/PatrikJansson?f_ri=454","photo":"https://gravatar.com/avatar/72f4e977d7e87de077a4885e05574e31?s=65"}</script></span></span></li><li class="js-paper-rank-work_34797723 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="34797723"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 34797723, container: ".js-paper-rank-work_34797723", }); });</script></li><li class="js-percentile-work_34797723 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 34797723; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_34797723"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_34797723 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="34797723"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 34797723; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=34797723]").text(description); $(".js-view-count-work_34797723").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_34797723").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="34797723"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">6</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="305" href="https://www.academia.edu/Documents/in/Applied_Mathematics">Applied Mathematics</a>,&nbsp;<script data-card-contents-for-ri="305" type="text/json">{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="64561" href="https://www.academia.edu/Documents/in/Computer_Software">Computer Software</a><script data-card-contents-for-ri="64561" type="text/json">{"id":64561,"name":"Computer Software","url":"https://www.academia.edu/Documents/in/Computer_Software?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=34797723]'), work: {"id":34797723,"title":"Generic programming with C++ concepts and Haskell type classes—a comparison","created_at":"2017-10-08T07:38:22.506-07:00","url":"https://www.academia.edu/34797723/Generic_programming_with_C_concepts_and_Haskell_type_classes_a_comparison?f_ri=454","dom_id":"work_34797723","summary":"Earlier studies have introduced a list of high-level evaluation criteria to assess how well a language supports generic programming. Languages that meet all criteria include Haskell because of its type classes and C++ with the concept feature. We refine these criteria into a taxonomy that captures commonalities and differences between type classes in Haskell and concepts in C++ and discuss which differences are incidental and which ones are due to other language features. The taxonomy allows for an improved understanding of language support for generic programming, and the comparison is useful for the ongoing discussions among language designers and users of both languages.","downloadable_attachments":[{"id":54657131,"asset_id":34797723,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":59048781,"first_name":"Patrik","last_name":"Jansson","domain_name":"chalmers","page_name":"PatrikJansson","display_name":"Patrik Jansson","profile_url":"https://chalmers.academia.edu/PatrikJansson?f_ri=454","photo":"https://gravatar.com/avatar/72f4e977d7e87de077a4885e05574e31?s=65"}],"research_interests":[{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false},{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":64561,"name":"Computer Software","url":"https://www.academia.edu/Documents/in/Computer_Software?f_ri=454","nofollow":false},{"id":74777,"name":"Generic Programming","url":"https://www.academia.edu/Documents/in/Generic_Programming?f_ri=454"},{"id":556845,"name":"Numerical Analysis and Computational Mathematics","url":"https://www.academia.edu/Documents/in/Numerical_Analysis_and_Computational_Mathematics?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_66407530" data-work_id="66407530" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/66407530/Meta_programming_with_names_and_necessity">Meta-programming with names and necessity</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Meta-programming languages provide infrastructure to generate and execute object programs at run-time. In a typed setting, they contain a modal type constructor which classifies object code. These code types generally come in two flavors:... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_66407530" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Meta-programming languages provide infrastructure to generate and execute object programs at run-time. In a typed setting, they contain a modal type constructor which classifies object code. These code types generally come in two flavors: closed and open. Closed code expressions can be invoked at run-time, but the computations over them are more rigid, and typically produce less efficient residual object programs. Open code provides better inlining and partial evaluation of object programs, but once constructed, expressions of this type cannot in general be evaluated.Recent work in this area has focused on combining the two notions into a sound system. We present a novel way to achieve this. It is based on adding the notion of names from the work on Nominal Logic and FreshML to the λ -calculus of proof terms for the necessity fragment of modal logic S4. The resulting language provides a more fine-grained control over free variables of object programs when compared to the existing la...</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/66407530" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="f491365c00d04f73d3bcfbe1964a40c7" rel="nofollow" data-download="{&quot;attachment_id&quot;:77610399,&quot;asset_id&quot;:66407530,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/77610399/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="34527068" href="https://independent.academia.edu/AleksandarNanevski">Aleksandar Nanevski</a><script data-card-contents-for-user="34527068" type="text/json">{"id":34527068,"first_name":"Aleksandar","last_name":"Nanevski","domain_name":"independent","page_name":"AleksandarNanevski","display_name":"Aleksandar Nanevski","profile_url":"https://independent.academia.edu/AleksandarNanevski?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_66407530 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="66407530"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 66407530, container: ".js-paper-rank-work_66407530", }); });</script></li><li class="js-percentile-work_66407530 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 66407530; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_66407530"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_66407530 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="66407530"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 66407530; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=66407530]").text(description); $(".js-view-count-work_66407530").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_66407530").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="66407530"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">10</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="361" href="https://www.academia.edu/Documents/in/Modal_Logic">Modal Logic</a>,&nbsp;<script data-card-contents-for-ri="361" type="text/json">{"id":361,"name":"Modal Logic","url":"https://www.academia.edu/Documents/in/Modal_Logic?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="18765" href="https://www.academia.edu/Documents/in/Lambda_Calculus">Lambda Calculus</a><script data-card-contents-for-ri="18765" type="text/json">{"id":18765,"name":"Lambda Calculus","url":"https://www.academia.edu/Documents/in/Lambda_Calculus?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=66407530]'), work: {"id":66407530,"title":"Meta-programming with names and necessity","created_at":"2021-12-29T09:13:49.491-08:00","url":"https://www.academia.edu/66407530/Meta_programming_with_names_and_necessity?f_ri=454","dom_id":"work_66407530","summary":"Meta-programming languages provide infrastructure to generate and execute object programs at run-time. In a typed setting, they contain a modal type constructor which classifies object code. These code types generally come in two flavors: closed and open. Closed code expressions can be invoked at run-time, but the computations over them are more rigid, and typically produce less efficient residual object programs. Open code provides better inlining and partial evaluation of object programs, but once constructed, expressions of this type cannot in general be evaluated.Recent work in this area has focused on combining the two notions into a sound system. We present a novel way to achieve this. It is based on adding the notion of names from the work on Nominal Logic and FreshML to the λ -calculus of proof terms for the necessity fragment of modal logic S4. The resulting language provides a more fine-grained control over free variables of object programs when compared to the existing la...","downloadable_attachments":[{"id":77610399,"asset_id":66407530,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":34527068,"first_name":"Aleksandar","last_name":"Nanevski","domain_name":"independent","page_name":"AleksandarNanevski","display_name":"Aleksandar Nanevski","profile_url":"https://independent.academia.edu/AleksandarNanevski?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":361,"name":"Modal Logic","url":"https://www.academia.edu/Documents/in/Modal_Logic?f_ri=454","nofollow":false},{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":18765,"name":"Lambda Calculus","url":"https://www.academia.edu/Documents/in/Lambda_Calculus?f_ri=454","nofollow":false},{"id":109613,"name":"Metaprogramming","url":"https://www.academia.edu/Documents/in/Metaprogramming?f_ri=454"},{"id":371541,"name":"Type System","url":"https://www.academia.edu/Documents/in/Type_System?f_ri=454"},{"id":683822,"name":"Meta Programming","url":"https://www.academia.edu/Documents/in/Meta_Programming?f_ri=454"},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"},{"id":1922225,"name":"Program Generation","url":"https://www.academia.edu/Documents/in/Program_Generation?f_ri=454"},{"id":1991705,"name":"PARTIAL EVALUATION","url":"https://www.academia.edu/Documents/in/PARTIAL_EVALUATION?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_24426612" data-work_id="24426612" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/24426612/Functional_Optimal_Estimation_Problems_and_Their_Solution_by_Nonlinear_Approximation_Schemes">Functional Optimal Estimation Problems and Their Solution by Nonlinear Approximation Schemes</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">The design of state estimators for nonlinear dynamic systems affected by disturbances is addressed in a functional optimization framework. The estimator contains an innovation function that has to be chosen within a suitably defined class... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_24426612" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">The design of state estimators for nonlinear dynamic systems affected by disturbances is addressed in a functional optimization framework. The estimator contains an innovation function that has to be chosen within a suitably defined class of functions in such a way to minimize a cost functional given by the worst-case ratio of the L p norms of the estimation error and the disturbances. Since this entails an infinite-dimensional optimization problem that under general hypotheses cannot be solved analytically, an approximate solution is sought by minimizing the cost functional over linear combinations of simple &quot;basis functions,&quot; represented by computational units with adjustable parameters. The selection of the parameters is made by solving a constrained nonlinear programming problem, where the constraints are given by pointwise conditions that ensure the well-definiteness of the functional and the existence of a solution. Penalty terms are introduced in the cost function to account for constraints imposed on points that result from sampling the sets to which the trajectories of the state and of the estimation error belong. To ensure an efficient 446 J Optim Theory Appl : covering of the sets, low-discrepancy sampling techniques are exploited that generate samples deterministically spread in a uniform way, without leaving regions of the space undersampled.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/24426612" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="471f1b02ceeefda41af8e5161dd2ae07" rel="nofollow" data-download="{&quot;attachment_id&quot;:44756938,&quot;asset_id&quot;:24426612,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/44756938/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="47088807" href="https://independent.academia.edu/SanguinetiMarcello">Marcello Sanguineti</a><script data-card-contents-for-user="47088807" type="text/json">{"id":47088807,"first_name":"Marcello","last_name":"Sanguineti","domain_name":"independent","page_name":"SanguinetiMarcello","display_name":"Marcello Sanguineti","profile_url":"https://independent.academia.edu/SanguinetiMarcello?f_ri=454","photo":"https://0.academia-photos.com/47088807/115667719/104956094/s65_marcello.sanguineti.png"}</script></span></span></li><li class="js-paper-rank-work_24426612 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="24426612"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 24426612, container: ".js-paper-rank-work_24426612", }); });</script></li><li class="js-percentile-work_24426612 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 24426612; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_24426612"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_24426612 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="24426612"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 24426612; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=24426612]").text(description); $(".js-view-count-work_24426612").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_24426612").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="24426612"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">18</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="305" href="https://www.academia.edu/Documents/in/Applied_Mathematics">Applied Mathematics</a>,&nbsp;<script data-card-contents-for-ri="305" type="text/json">{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1564" href="https://www.academia.edu/Documents/in/System_Identification">System Identification</a>,&nbsp;<script data-card-contents-for-ri="1564" type="text/json">{"id":1564,"name":"System Identification","url":"https://www.academia.edu/Documents/in/System_Identification?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="5448" href="https://www.academia.edu/Documents/in/Nonlinear_Programming">Nonlinear Programming</a><script data-card-contents-for-ri="5448" type="text/json">{"id":5448,"name":"Nonlinear Programming","url":"https://www.academia.edu/Documents/in/Nonlinear_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=24426612]'), work: {"id":24426612,"title":"Functional Optimal Estimation Problems and Their Solution by Nonlinear Approximation Schemes","created_at":"2016-04-15T03:10:25.609-07:00","url":"https://www.academia.edu/24426612/Functional_Optimal_Estimation_Problems_and_Their_Solution_by_Nonlinear_Approximation_Schemes?f_ri=454","dom_id":"work_24426612","summary":"The design of state estimators for nonlinear dynamic systems affected by disturbances is addressed in a functional optimization framework. The estimator contains an innovation function that has to be chosen within a suitably defined class of functions in such a way to minimize a cost functional given by the worst-case ratio of the L p norms of the estimation error and the disturbances. Since this entails an infinite-dimensional optimization problem that under general hypotheses cannot be solved analytically, an approximate solution is sought by minimizing the cost functional over linear combinations of simple \"basis functions,\" represented by computational units with adjustable parameters. The selection of the parameters is made by solving a constrained nonlinear programming problem, where the constraints are given by pointwise conditions that ensure the well-definiteness of the functional and the existence of a solution. Penalty terms are introduced in the cost function to account for constraints imposed on points that result from sampling the sets to which the trajectories of the state and of the estimation error belong. To ensure an efficient 446 J Optim Theory Appl : covering of the sets, low-discrepancy sampling techniques are exploited that generate samples deterministically spread in a uniform way, without leaving regions of the space undersampled.","downloadable_attachments":[{"id":44756938,"asset_id":24426612,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":47088807,"first_name":"Marcello","last_name":"Sanguineti","domain_name":"independent","page_name":"SanguinetiMarcello","display_name":"Marcello Sanguineti","profile_url":"https://independent.academia.edu/SanguinetiMarcello?f_ri=454","photo":"https://0.academia-photos.com/47088807/115667719/104956094/s65_marcello.sanguineti.png"}],"research_interests":[{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":1564,"name":"System Identification","url":"https://www.academia.edu/Documents/in/System_Identification?f_ri=454","nofollow":false},{"id":5448,"name":"Nonlinear Programming","url":"https://www.academia.edu/Documents/in/Nonlinear_Programming?f_ri=454","nofollow":false},{"id":33252,"name":"State Estimation","url":"https://www.academia.edu/Documents/in/State_Estimation?f_ri=454"},{"id":46254,"name":"Optimization Problem","url":"https://www.academia.edu/Documents/in/Optimization_Problem?f_ri=454"},{"id":57531,"name":"Sampling","url":"https://www.academia.edu/Documents/in/Sampling?f_ri=454"},{"id":63137,"name":"Non Linear Programming","url":"https://www.academia.edu/Documents/in/Non_Linear_Programming?f_ri=454"},{"id":228734,"name":"Dynamical System","url":"https://www.academia.edu/Documents/in/Dynamical_System?f_ri=454"},{"id":476803,"name":"Nonlinear Dynamic System","url":"https://www.academia.edu/Documents/in/Nonlinear_Dynamic_System?f_ri=454"},{"id":556845,"name":"Numerical Analysis and Computational Mathematics","url":"https://www.academia.edu/Documents/in/Numerical_Analysis_and_Computational_Mathematics?f_ri=454"},{"id":678683,"name":"Sampling Technique","url":"https://www.academia.edu/Documents/in/Sampling_Technique?f_ri=454"},{"id":737958,"name":"Optimal Bayesian Estimation","url":"https://www.academia.edu/Documents/in/Optimal_Bayesian_Estimation?f_ri=454"},{"id":1003508,"name":"Cost Function","url":"https://www.academia.edu/Documents/in/Cost_Function?f_ri=454"},{"id":1237788,"name":"Electrical And Electronic Engineering","url":"https://www.academia.edu/Documents/in/Electrical_And_Electronic_Engineering?f_ri=454"},{"id":1689234,"name":"Constrained Optimization","url":"https://www.academia.edu/Documents/in/Constrained_Optimization?f_ri=454"},{"id":1745949,"name":"Innovation","url":"https://www.academia.edu/Documents/in/Innovation-61?f_ri=454"},{"id":1846160,"name":"Function optimization","url":"https://www.academia.edu/Documents/in/Function_optimization?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_9265360" data-work_id="9265360" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/9265360/Efficiently_compiling_a_functional_language_on_AMD64_the_HiPE_experience">Efficiently compiling a functional language on AMD64: the HiPE experience</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">We describe and document our experience from developing an AMD64 backend for the HiPE (High Performance Erlang) native code compiler. We consider implementation alternatives and critically examine design choices for obtaining an efficient... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_9265360" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">We describe and document our experience from developing an AMD64 backend for the HiPE (High Performance Erlang) native code compiler. We consider implementation alternatives and critically examine design choices for obtaining an efficient AMD64 backend. In particular, we consider in detail how other functional language implementors can migrate their existing x86 backends to the AMD64 architecture, a platform which is becoming increasingly important these days. We mention backend components that can be shared between x86 and AMD64, and those that better be different for achieving high performance on AMD64. Finally, we measure the performance of several different alternatives in the hope that this information can save development effort for others who intend to engage in a similar feat.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/9265360" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="72883226124df23ffb955dbcabf5fed3" rel="nofollow" data-download="{&quot;attachment_id&quot;:35531486,&quot;asset_id&quot;:9265360,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/35531486/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="21290205" href="https://independent.academia.edu/DanielLuna19">Daniel Luna</a><script data-card-contents-for-user="21290205" type="text/json">{"id":21290205,"first_name":"Daniel","last_name":"Luna","domain_name":"independent","page_name":"DanielLuna19","display_name":"Daniel Luna","profile_url":"https://independent.academia.edu/DanielLuna19?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_9265360 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="9265360"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 9265360, container: ".js-paper-rank-work_9265360", }); });</script></li><li class="js-percentile-work_9265360 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 9265360; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_9265360"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_9265360 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="9265360"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 9265360; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=9265360]").text(description); $(".js-view-count-work_9265360").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_9265360").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="9265360"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="79931" href="https://www.academia.edu/Documents/in/Erlang">Erlang</a>,&nbsp;<script data-card-contents-for-ri="79931" type="text/json">{"id":79931,"name":"Erlang","url":"https://www.academia.edu/Documents/in/Erlang?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="297691" href="https://www.academia.edu/Documents/in/High_performance">High performance</a>,&nbsp;<script data-card-contents-for-ri="297691" type="text/json">{"id":297691,"name":"High performance","url":"https://www.academia.edu/Documents/in/High_performance?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1772107" href="https://www.academia.edu/Documents/in/Functional_Language">Functional Language</a><script data-card-contents-for-ri="1772107" type="text/json">{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=9265360]'), work: {"id":9265360,"title":"Efficiently compiling a functional language on AMD64: the HiPE experience","created_at":"2014-11-12T00:00:26.250-08:00","url":"https://www.academia.edu/9265360/Efficiently_compiling_a_functional_language_on_AMD64_the_HiPE_experience?f_ri=454","dom_id":"work_9265360","summary":"We describe and document our experience from developing an AMD64 backend for the HiPE (High Performance Erlang) native code compiler. We consider implementation alternatives and critically examine design choices for obtaining an efficient AMD64 backend. In particular, we consider in detail how other functional language implementors can migrate their existing x86 backends to the AMD64 architecture, a platform which is becoming increasingly important these days. We mention backend components that can be shared between x86 and AMD64, and those that better be different for achieving high performance on AMD64. Finally, we measure the performance of several different alternatives in the hope that this information can save development effort for others who intend to engage in a similar feat.","downloadable_attachments":[{"id":35531486,"asset_id":9265360,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":21290205,"first_name":"Daniel","last_name":"Luna","domain_name":"independent","page_name":"DanielLuna19","display_name":"Daniel Luna","profile_url":"https://independent.academia.edu/DanielLuna19?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":79931,"name":"Erlang","url":"https://www.academia.edu/Documents/in/Erlang?f_ri=454","nofollow":false},{"id":297691,"name":"High performance","url":"https://www.academia.edu/Documents/in/High_performance?f_ri=454","nofollow":false},{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_3287848" data-work_id="3287848" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/3287848/A_Lisp_Subset_Based_on_MathML">A Lisp Subset Based on MathML</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">We are interested in an XML representation for programming languages. Could content markup of MathML be used for this purpose, especially in the setting of a functional programming language? In order to address this question we have... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_3287848" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">We are interested in an XML representation for programming languages. Could content markup of MathML be used for this purpose, especially in the setting of a functional programming language? In order to address this question we have developed an interpreter for a Scheme-like language encoded in XML. We demonstrate that, with some degree of extension to its core elements, syntax and default semantics of content MathML are quite sufficient to represent Scheme expressions. We also describe the basic architecture of the interpreter, which has been written in Java. Our work suggests that the potential of a web scripting language encoded in XML (possibly based on MathML) is very high. In particular, it offers very natural mechanisms to construct XML expressions dynamically incorporating desired XML subexpressions.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/3287848" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="26eacc12344962f7bab0387aa11f1bca" rel="nofollow" data-download="{&quot;attachment_id&quot;:31141589,&quot;asset_id&quot;:3287848,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/31141589/download_file?st=MTczNDAxMzQ1MSw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="174958" href="https://westernu.academia.edu/StephenWatt">Stephen Watt</a><script data-card-contents-for-user="174958" type="text/json">{"id":174958,"first_name":"Stephen","last_name":"Watt","domain_name":"westernu","page_name":"StephenWatt","display_name":"Stephen Watt","profile_url":"https://westernu.academia.edu/StephenWatt?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_3287848 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="3287848"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 3287848, container: ".js-paper-rank-work_3287848", }); });</script></li><li class="js-percentile-work_3287848 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 3287848; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_3287848"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_3287848 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="3287848"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 3287848; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=3287848]").text(description); $(".js-view-count-work_3287848").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_3287848").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="3287848"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">2</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="212702" href="https://www.academia.edu/Documents/in/Scripting_Language">Scripting Language</a><script data-card-contents-for-ri="212702" type="text/json">{"id":212702,"name":"Scripting Language","url":"https://www.academia.edu/Documents/in/Scripting_Language?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=3287848]'), work: {"id":3287848,"title":"A Lisp Subset Based on MathML","created_at":"2013-04-14T05:16:52.015-07:00","url":"https://www.academia.edu/3287848/A_Lisp_Subset_Based_on_MathML?f_ri=454","dom_id":"work_3287848","summary":"We are interested in an XML representation for programming languages. Could content markup of MathML be used for this purpose, especially in the setting of a functional programming language? In order to address this question we have developed an interpreter for a Scheme-like language encoded in XML. We demonstrate that, with some degree of extension to its core elements, syntax and default semantics of content MathML are quite sufficient to represent Scheme expressions. We also describe the basic architecture of the interpreter, which has been written in Java. Our work suggests that the potential of a web scripting language encoded in XML (possibly based on MathML) is very high. In particular, it offers very natural mechanisms to construct XML expressions dynamically incorporating desired XML subexpressions.","downloadable_attachments":[{"id":31141589,"asset_id":3287848,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":174958,"first_name":"Stephen","last_name":"Watt","domain_name":"westernu","page_name":"StephenWatt","display_name":"Stephen Watt","profile_url":"https://westernu.academia.edu/StephenWatt?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":212702,"name":"Scripting Language","url":"https://www.academia.edu/Documents/in/Scripting_Language?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_2360444" data-work_id="2360444" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/2360444/A_Perspective_on_Combining_Different_Programming_Paradigms">A Perspective on Combining Different Programming Paradigms</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">The motivation and the basic issues for designing the programming system - ELa, that allowed combination of different programming paradigms is presented in the part one of this paper. In the ELa system distinct styles of programming... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_2360444" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">The motivation and the basic issues for designing the programming system - ELa, that allowed combination of different programming paradigms is presented in the part one of this paper. In the ELa system distinct styles of programming (functional, logic and object-oriented) are enabled. The system is currently under development at the Institute of Mathematics in Novi Sad. In this paper we describe the problem definition of a multiprogramming system, and the current state of realization of that programming system. In the part two we will illustrate the ELa system that permit the combination of the functional, the logical and the object oriented paradigm of programming. <br /> <br />Jerinić, Lj., A Perspective on Combining Different Programming Paradigms. Bulletins for Applied Mathematics, BAM 1066/95 (LXXV), (May 1995) Budapest, 35-46.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/2360444" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="efd6362213768779101c97807c5b3a4e" rel="nofollow" data-download="{&quot;attachment_id&quot;:30398022,&quot;asset_id&quot;:2360444,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/30398022/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="572739" href="https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic">Ljubomir Jerinic</a><script data-card-contents-for-user="572739" type="text/json">{"id":572739,"first_name":"Ljubomir","last_name":"Jerinic","domain_name":"novisaddepartmentofmathematicsandinformatics","page_name":"LjubomirJerinic","display_name":"Ljubomir Jerinic","profile_url":"https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic?f_ri=454","photo":"https://0.academia-photos.com/572739/204311/238412/s65_ljubomir.jerinic.jpg"}</script></span></span></li><li class="js-paper-rank-work_2360444 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="2360444"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 2360444, container: ".js-paper-rank-work_2360444", }); });</script></li><li class="js-percentile-work_2360444 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 2360444; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_2360444"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_2360444 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="2360444"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 2360444; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=2360444]").text(description); $(".js-view-count-work_2360444").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_2360444").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="2360444"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">2</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="452" href="https://www.academia.edu/Documents/in/Programming_Paradigms">Programming Paradigms</a>,&nbsp;<script data-card-contents-for-ri="452" type="text/json">{"id":452,"name":"Programming Paradigms","url":"https://www.academia.edu/Documents/in/Programming_Paradigms?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a><script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=2360444]'), work: {"id":2360444,"title":"A Perspective on Combining Different Programming Paradigms","created_at":"2013-01-04T04:10:38.372-08:00","url":"https://www.academia.edu/2360444/A_Perspective_on_Combining_Different_Programming_Paradigms?f_ri=454","dom_id":"work_2360444","summary":"The motivation and the basic issues for designing the programming system - ELa, that allowed combination of different programming paradigms is presented in the part one of this paper. In the ELa system distinct styles of programming (functional, logic and object-oriented) are enabled. The system is currently under development at the Institute of Mathematics in Novi Sad. In this paper we describe the problem definition of a multiprogramming system, and the current state of realization of that programming system. In the part two we will illustrate the ELa system that permit the combination of the functional, the logical and the object oriented paradigm of programming.\r\n\r\nJerinić, Lj., A Perspective on Combining Different Programming Paradigms. Bulletins for Applied Mathematics, BAM 1066/95 (LXXV), (May 1995) Budapest, 35-46.","downloadable_attachments":[{"id":30398022,"asset_id":2360444,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":572739,"first_name":"Ljubomir","last_name":"Jerinic","domain_name":"novisaddepartmentofmathematicsandinformatics","page_name":"LjubomirJerinic","display_name":"Ljubomir Jerinic","profile_url":"https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic?f_ri=454","photo":"https://0.academia-photos.com/572739/204311/238412/s65_ljubomir.jerinic.jpg"}],"research_interests":[{"id":452,"name":"Programming Paradigms","url":"https://www.academia.edu/Documents/in/Programming_Paradigms?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_55250247" data-work_id="55250247" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/55250247/Java_as_a_Functional_Programming_Language">Java as a Functional Programming Language</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">We introduce a direct encoding of the typed λ-calculus into Java: for any Java types A, B we introduce the type A → B together with function application and λ-abstraction. The latter makes use of anonymous inner classes. We show that... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_55250247" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">We introduce a direct encoding of the typed λ-calculus into Java: for any Java types A, B we introduce the type A → B together with function application and λ-abstraction. The latter makes use of anonymous inner classes. We show that λ-terms are evaluated by call-by-value. We then look at how to model domain equations in Java and as an example consider the untyped lambda calculus. Then we investigate the use of function parameters in order to control overriding and in order to dynamically update methods, which can substitute certain applications of the state pattern. Further we introduce a foreach-loop in collection classes. Finally we introduce algebraic types. Elements of the resulting type are given by their elimination rules. Algebraic types with infinitely many arguments like Kleene&#39;s O and simultaneous algebraic types are already contained in that notion. Further we introduce an operation selfupdate, which allows to modify for instance a subtree of a tree, without making a copy of the original tree. All the above constructions are direct and can be done by hand.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/55250247" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="f63841ebdc7850f2bbd429f258d81e9f" rel="nofollow" data-download="{&quot;attachment_id&quot;:71209255,&quot;asset_id&quot;:55250247,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/71209255/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="28760565" href="https://independent.academia.edu/AntonSetzer">Anton Setzer</a><script data-card-contents-for-user="28760565" type="text/json">{"id":28760565,"first_name":"Anton","last_name":"Setzer","domain_name":"independent","page_name":"AntonSetzer","display_name":"Anton Setzer","profile_url":"https://independent.academia.edu/AntonSetzer?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_55250247 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="55250247"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 55250247, container: ".js-paper-rank-work_55250247", }); });</script></li><li class="js-percentile-work_55250247 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 55250247; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_55250247"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_55250247 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="55250247"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 55250247; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=55250247]").text(description); $(".js-view-count-work_55250247").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_55250247").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="55250247"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="453" href="https://www.academia.edu/Documents/in/Object_Oriented_Programming">Object Oriented Programming</a>,&nbsp;<script data-card-contents-for-ri="453" type="text/json">{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="456" href="https://www.academia.edu/Documents/in/Type_Theory">Type Theory</a>,&nbsp;<script data-card-contents-for-ri="456" type="text/json">{"id":456,"name":"Type Theory","url":"https://www.academia.edu/Documents/in/Type_Theory?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="18765" href="https://www.academia.edu/Documents/in/Lambda_Calculus">Lambda Calculus</a><script data-card-contents-for-ri="18765" type="text/json">{"id":18765,"name":"Lambda Calculus","url":"https://www.academia.edu/Documents/in/Lambda_Calculus?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=55250247]'), work: {"id":55250247,"title":"Java as a Functional Programming Language","created_at":"2021-10-03T15:22:48.131-07:00","url":"https://www.academia.edu/55250247/Java_as_a_Functional_Programming_Language?f_ri=454","dom_id":"work_55250247","summary":"We introduce a direct encoding of the typed λ-calculus into Java: for any Java types A, B we introduce the type A → B together with function application and λ-abstraction. The latter makes use of anonymous inner classes. We show that λ-terms are evaluated by call-by-value. We then look at how to model domain equations in Java and as an example consider the untyped lambda calculus. Then we investigate the use of function parameters in order to control overriding and in order to dynamically update methods, which can substitute certain applications of the state pattern. Further we introduce a foreach-loop in collection classes. Finally we introduce algebraic types. Elements of the resulting type are given by their elimination rules. Algebraic types with infinitely many arguments like Kleene's O and simultaneous algebraic types are already contained in that notion. Further we introduce an operation selfupdate, which allows to modify for instance a subtree of a tree, without making a copy of the original tree. All the above constructions are direct and can be done by hand.","downloadable_attachments":[{"id":71209255,"asset_id":55250247,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":28760565,"first_name":"Anton","last_name":"Setzer","domain_name":"independent","page_name":"AntonSetzer","display_name":"Anton Setzer","profile_url":"https://independent.academia.edu/AntonSetzer?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":456,"name":"Type Theory","url":"https://www.academia.edu/Documents/in/Type_Theory?f_ri=454","nofollow":false},{"id":18765,"name":"Lambda Calculus","url":"https://www.academia.edu/Documents/in/Lambda_Calculus?f_ri=454","nofollow":false},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"},{"id":1547415,"name":"Data Type","url":"https://www.academia.edu/Documents/in/Data_Type?f_ri=454"},{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_65685404" data-work_id="65685404" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/65685404/Constraint_Application_With_Higher_Order_Programming_for_Modeling_Music_Theories">Constraint Application With Higher-Order Programming for Modeling Music Theories</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Modeling music theories with computer programs has attracted composers and scholars for a long time. On the one hand, the resulting programs can serve as algorithmic composition tools. On the other hand, such an approach leads to a better... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_65685404" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Modeling music theories with computer programs has attracted composers and scholars for a long time. On the one hand, the resulting programs can serve as algorithmic composition tools. On the other hand, such an approach leads to a better understanding of existing as well as newly developed theories, which in turn can lead to a better understanding of music, as well as to better ways to retrieve music from databases. Constraint programming (Apt 2003) has often been used to create computational models of music theories and composition. Constraint-based harmonization systems were surveyed by Pachet and Roy (2001); other examples include purely rhythmic tasks (Sandred 2003), Fuxian counterpoint (Schottstaedt 1989), Ligeti-like textures (Chemillier and Truchet 2001; Laurson and Kuuskankare 2001), and instrument-specific writing (Laurson and Kuuskankare 2001). Many music constraint systems have been proposed in which users implement their own music theory models. Two seminal systems are PWConstraints (Laurson 1996) and Situation (Rueda et al. 1998). Carla (Courtot 1990) is one of the earliest systems. Other examples include the aggregation of the music representation MusES with the constraint system BackTalk (Pachet and Roy 1995), Arno (Anders 2000), OMClouds (Truchet and Codognet 2004), andÖrjan Sandred&#39;s PWMC defined on top of PWConstraints (Sandred 2010, in this issue). A survey of music-constraint programming in general and a detailed comparison of existing systems is provided by Anders and Miranda (in press). Each system provides the following components, which are essential for solving musical constraint satisfaction problems (CSP). It defines a music representation (score) where some aspects are</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/65685404" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="ec3cfd4727590725e02d151e61e7ff25" rel="nofollow" data-download="{&quot;attachment_id&quot;:77175000,&quot;asset_id&quot;:65685404,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/77175000/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="128504508" href="https://independent.academia.edu/EduardoQuintanarMiranda">Eduardo Quintanar Miranda</a><script data-card-contents-for-user="128504508" type="text/json">{"id":128504508,"first_name":"Eduardo","last_name":"Quintanar Miranda","domain_name":"independent","page_name":"EduardoQuintanarMiranda","display_name":"Eduardo Quintanar Miranda","profile_url":"https://independent.academia.edu/EduardoQuintanarMiranda?f_ri=454","photo":"https://0.academia-photos.com/128504508/34022386/30073218/s65_eduardo.quintanar_miranda.jpg"}</script></span></span></li><li class="js-paper-rank-work_65685404 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="65685404"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 65685404, container: ".js-paper-rank-work_65685404", }); });</script></li><li class="js-percentile-work_65685404 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 65685404; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_65685404"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_65685404 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="65685404"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 65685404; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=65685404]").text(description); $(".js-view-count-work_65685404").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_65685404").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="65685404"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">10</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1018" href="https://www.academia.edu/Documents/in/Music_Technology">Music Technology</a>,&nbsp;<script data-card-contents-for-ri="1018" type="text/json">{"id":1018,"name":"Music Technology","url":"https://www.academia.edu/Documents/in/Music_Technology?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="2045" href="https://www.academia.edu/Documents/in/Computer_Music">Computer Music</a><script data-card-contents-for-ri="2045" type="text/json">{"id":2045,"name":"Computer Music","url":"https://www.academia.edu/Documents/in/Computer_Music?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=65685404]'), work: {"id":65685404,"title":"Constraint Application With Higher-Order Programming for Modeling Music Theories","created_at":"2021-12-23T05:52:28.543-08:00","url":"https://www.academia.edu/65685404/Constraint_Application_With_Higher_Order_Programming_for_Modeling_Music_Theories?f_ri=454","dom_id":"work_65685404","summary":"Modeling music theories with computer programs has attracted composers and scholars for a long time. On the one hand, the resulting programs can serve as algorithmic composition tools. On the other hand, such an approach leads to a better understanding of existing as well as newly developed theories, which in turn can lead to a better understanding of music, as well as to better ways to retrieve music from databases. Constraint programming (Apt 2003) has often been used to create computational models of music theories and composition. Constraint-based harmonization systems were surveyed by Pachet and Roy (2001); other examples include purely rhythmic tasks (Sandred 2003), Fuxian counterpoint (Schottstaedt 1989), Ligeti-like textures (Chemillier and Truchet 2001; Laurson and Kuuskankare 2001), and instrument-specific writing (Laurson and Kuuskankare 2001). Many music constraint systems have been proposed in which users implement their own music theory models. Two seminal systems are PWConstraints (Laurson 1996) and Situation (Rueda et al. 1998). Carla (Courtot 1990) is one of the earliest systems. Other examples include the aggregation of the music representation MusES with the constraint system BackTalk (Pachet and Roy 1995), Arno (Anders 2000), OMClouds (Truchet and Codognet 2004), andÖrjan Sandred's PWMC defined on top of PWConstraints (Sandred 2010, in this issue). A survey of music-constraint programming in general and a detailed comparison of existing systems is provided by Anders and Miranda (in press). Each system provides the following components, which are essential for solving musical constraint satisfaction problems (CSP). It defines a music representation (score) where some aspects are","downloadable_attachments":[{"id":77175000,"asset_id":65685404,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":128504508,"first_name":"Eduardo","last_name":"Quintanar Miranda","domain_name":"independent","page_name":"EduardoQuintanarMiranda","display_name":"Eduardo Quintanar Miranda","profile_url":"https://independent.academia.edu/EduardoQuintanarMiranda?f_ri=454","photo":"https://0.academia-photos.com/128504508/34022386/30073218/s65_eduardo.quintanar_miranda.jpg"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":1018,"name":"Music Technology","url":"https://www.academia.edu/Documents/in/Music_Technology?f_ri=454","nofollow":false},{"id":2045,"name":"Computer Music","url":"https://www.academia.edu/Documents/in/Computer_Music?f_ri=454","nofollow":false},{"id":3153,"name":"Algorithmic Composition","url":"https://www.academia.edu/Documents/in/Algorithmic_Composition?f_ri=454"},{"id":4930,"name":"Sound and Music Computing","url":"https://www.academia.edu/Documents/in/Sound_and_Music_Computing?f_ri=454"},{"id":17874,"name":"Constraint Programming","url":"https://www.academia.edu/Documents/in/Constraint_Programming?f_ri=454"},{"id":346593,"name":"Strasheela","url":"https://www.academia.edu/Documents/in/Strasheela?f_ri=454"},{"id":650717,"name":"Computer Aided Composition","url":"https://www.academia.edu/Documents/in/Computer_Aided_Composition?f_ri=454"},{"id":2948559,"name":"Higher order","url":"https://www.academia.edu/Documents/in/Higher_order?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_57933086" data-work_id="57933086" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/57933086/Combining_syntactic_and_semantic_bidirectionalization">Combining syntactic and semantic bidirectionalization</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Matsuda et al. [2007, ICFP] and Voigtländer [2009, POPL] introduced two techniques that given a source-to-view function provide an update propagation function mapping an original source and an updated view back to an updated source,... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_57933086" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Matsuda et al. [2007, ICFP] and Voigtländer [2009, POPL] introduced two techniques that given a source-to-view function provide an update propagation function mapping an original source and an updated view back to an updated source, subject to standard consistency conditions. Being fundamentally different in approach, both techniques have their respective strengths and weaknesses. Here we develop a synthesis of the two techniques to good effect. On the intersection of their applicability domains we achieve more than what a simple union of applying the techniques side by side delivers.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/57933086" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="15951f0448907281cfe664eac4c0c1d8" rel="nofollow" data-download="{&quot;attachment_id&quot;:72589439,&quot;asset_id&quot;:57933086,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/72589439/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="185489051" href="https://independent.academia.edu/HuZhenjiang">Zhenjiang Hu</a><script data-card-contents-for-user="185489051" type="text/json">{"id":185489051,"first_name":"Zhenjiang","last_name":"Hu","domain_name":"independent","page_name":"HuZhenjiang","display_name":"Zhenjiang Hu","profile_url":"https://independent.academia.edu/HuZhenjiang?f_ri=454","photo":"https://0.academia-photos.com/185489051/141554077/131048685/s65_zhenjiang.hu.png"}</script></span></span></li><li class="js-paper-rank-work_57933086 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="57933086"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 57933086, container: ".js-paper-rank-work_57933086", }); });</script></li><li class="js-percentile-work_57933086 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 57933086; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_57933086"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_57933086 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="57933086"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 57933086; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=57933086]").text(description); $(".js-view-count-work_57933086").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_57933086").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="57933086"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">10</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="101" href="https://www.academia.edu/Documents/in/Languages">Languages</a>,&nbsp;<script data-card-contents-for-ri="101" type="text/json">{"id":101,"name":"Languages","url":"https://www.academia.edu/Documents/in/Languages?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="988" href="https://www.academia.edu/Documents/in/Design">Design</a>,&nbsp;<script data-card-contents-for-ri="988" type="text/json">{"id":988,"name":"Design","url":"https://www.academia.edu/Documents/in/Design?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="2349" href="https://www.academia.edu/Documents/in/Semantics">Semantics</a><script data-card-contents-for-ri="2349" type="text/json">{"id":2349,"name":"Semantics","url":"https://www.academia.edu/Documents/in/Semantics?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=57933086]'), work: {"id":57933086,"title":"Combining syntactic and semantic bidirectionalization","created_at":"2021-10-14T17:12:32.937-07:00","url":"https://www.academia.edu/57933086/Combining_syntactic_and_semantic_bidirectionalization?f_ri=454","dom_id":"work_57933086","summary":"Matsuda et al. [2007, ICFP] and Voigtländer [2009, POPL] introduced two techniques that given a source-to-view function provide an update propagation function mapping an original source and an updated view back to an updated source, subject to standard consistency conditions. Being fundamentally different in approach, both techniques have their respective strengths and weaknesses. Here we develop a synthesis of the two techniques to good effect. On the intersection of their applicability domains we achieve more than what a simple union of applying the techniques side by side delivers.","downloadable_attachments":[{"id":72589439,"asset_id":57933086,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":185489051,"first_name":"Zhenjiang","last_name":"Hu","domain_name":"independent","page_name":"HuZhenjiang","display_name":"Zhenjiang Hu","profile_url":"https://independent.academia.edu/HuZhenjiang?f_ri=454","photo":"https://0.academia-photos.com/185489051/141554077/131048685/s65_zhenjiang.hu.png"}],"research_interests":[{"id":101,"name":"Languages","url":"https://www.academia.edu/Documents/in/Languages?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":988,"name":"Design","url":"https://www.academia.edu/Documents/in/Design?f_ri=454","nofollow":false},{"id":2349,"name":"Semantics","url":"https://www.academia.edu/Documents/in/Semantics?f_ri=454","nofollow":false},{"id":3855,"name":"Polymorphism","url":"https://www.academia.edu/Documents/in/Polymorphism?f_ri=454"},{"id":71833,"name":"Program Transformation","url":"https://www.academia.edu/Documents/in/Program_Transformation?f_ri=454"},{"id":154703,"name":"Database Management","url":"https://www.academia.edu/Documents/in/Database_Management?f_ri=454"},{"id":651477,"name":"Structured Query Language","url":"https://www.academia.edu/Documents/in/Structured_Query_Language?f_ri=454"},{"id":747371,"name":"Syntactic Analysis","url":"https://www.academia.edu/Documents/in/Syntactic_Analysis?f_ri=454"},{"id":1547415,"name":"Data Type","url":"https://www.academia.edu/Documents/in/Data_Type?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_79372544" data-work_id="79372544" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/79372544/Server_Side_Web_Programming_in_WASH">Server-Side Web Programming in WASH</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">WASH makes server-side Web programming as easy as programming a stand-alone application with an XHTML-based GUI. Starting from an interaction graph model of the application where nodes model web pages and edges correspond to form... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_79372544" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">WASH makes server-side Web programming as easy as programming a stand-alone application with an XHTML-based GUI. Starting from an interaction graph model of the application where nodes model web pages and edges correspond to form submissions, each node is implemented by a WASH function and the edges correspond to function invocation. Nodes can be decomposed further into “pagelets”, which are XHTML fragments bundled with associated logic. We give an introduction to the concepts of WASH programming with this methodology and advocate the design of interactive web functionality in terms of such pagelets. The two components of a pagelet may be specified monolithically or in separation. Pagelets may also be composed up to an entire WASH page. The development of a web-based logging application serves as a running example.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/79372544" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="126840164" href="https://uni-freiburg.academia.edu/PeterThiemann">Peter Thiemann</a><script data-card-contents-for-user="126840164" type="text/json">{"id":126840164,"first_name":"Peter","last_name":"Thiemann","domain_name":"uni-freiburg","page_name":"PeterThiemann","display_name":"Peter Thiemann","profile_url":"https://uni-freiburg.academia.edu/PeterThiemann?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_79372544 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="79372544"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 79372544, container: ".js-paper-rank-work_79372544", }); });</script></li><li class="js-percentile-work_79372544 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 79372544; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_79372544"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_79372544 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="79372544"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 79372544; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=79372544]").text(description); $(".js-view-count-work_79372544").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_79372544").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="79372544"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">11</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="2616" href="https://www.academia.edu/Documents/in/Graph_Theory">Graph Theory</a>,&nbsp;<script data-card-contents-for-ri="2616" type="text/json">{"id":2616,"name":"Graph Theory","url":"https://www.academia.edu/Documents/in/Graph_Theory?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="6177" href="https://www.academia.edu/Documents/in/Modeling">Modeling</a><script data-card-contents-for-ri="6177" type="text/json">{"id":6177,"name":"Modeling","url":"https://www.academia.edu/Documents/in/Modeling?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=79372544]'), work: {"id":79372544,"title":"Server-Side Web Programming in WASH","created_at":"2022-05-18T04:26:20.166-07:00","url":"https://www.academia.edu/79372544/Server_Side_Web_Programming_in_WASH?f_ri=454","dom_id":"work_79372544","summary":"WASH makes server-side Web programming as easy as programming a stand-alone application with an XHTML-based GUI. Starting from an interaction graph model of the application where nodes model web pages and edges correspond to form submissions, each node is implemented by a WASH function and the edges correspond to function invocation. Nodes can be decomposed further into “pagelets”, which are XHTML fragments bundled with associated logic. We give an introduction to the concepts of WASH programming with this methodology and advocate the design of interactive web functionality in terms of such pagelets. The two components of a pagelet may be specified monolithically or in separation. Pagelets may also be composed up to an entire WASH page. The development of a web-based logging application serves as a running example.","downloadable_attachments":[],"ordered_authors":[{"id":126840164,"first_name":"Peter","last_name":"Thiemann","domain_name":"uni-freiburg","page_name":"PeterThiemann","display_name":"Peter Thiemann","profile_url":"https://uni-freiburg.academia.edu/PeterThiemann?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":2616,"name":"Graph Theory","url":"https://www.academia.edu/Documents/in/Graph_Theory?f_ri=454","nofollow":false},{"id":6177,"name":"Modeling","url":"https://www.academia.edu/Documents/in/Modeling?f_ri=454","nofollow":false},{"id":8129,"name":"Software Development","url":"https://www.academia.edu/Documents/in/Software_Development?f_ri=454"},{"id":11119,"name":"User Interface","url":"https://www.academia.edu/Documents/in/User_Interface?f_ri=454"},{"id":79948,"name":"Web Programming","url":"https://www.academia.edu/Documents/in/Web_Programming?f_ri=454"},{"id":141114,"name":"World Wide Web","url":"https://www.academia.edu/Documents/in/World_Wide_Web?f_ri=454"},{"id":481229,"name":"Web Pages","url":"https://www.academia.edu/Documents/in/Web_Pages?f_ri=454"},{"id":1191356,"name":"Internet","url":"https://www.academia.edu/Documents/in/Internet?f_ri=454"},{"id":3453660,"name":"Graph Model","url":"https://www.academia.edu/Documents/in/Graph_Model?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_1126809" data-work_id="1126809" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/1126809/Imperative_functional_programming_with_Isabelle_HOL">Imperative functional programming with Isabelle/HOL</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest">in Montreal, Canada. TPHOLs covers all aspects of theorem proving in higher order logics as well as related topics in theorem proving and verification.</div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/1126809" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="d60757a8ed68a42786e74d0f9c2a5500" rel="nofollow" data-download="{&quot;attachment_id&quot;:6957699,&quot;asset_id&quot;:1126809,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/6957699/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="999692" href="https://independent.academia.edu/LeventErkok">Levent Erkok</a><script data-card-contents-for-user="999692" type="text/json">{"id":999692,"first_name":"Levent","last_name":"Erkok","domain_name":"independent","page_name":"LeventErkok","display_name":"Levent Erkok","profile_url":"https://independent.academia.edu/LeventErkok?f_ri=454","photo":"https://gravatar.com/avatar/b5d8868742cf3172c2a34fb6aeb1c0cd?s=65"}</script></span></span></li><li class="js-paper-rank-work_1126809 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="1126809"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 1126809, container: ".js-paper-rank-work_1126809", }); });</script></li><li class="js-percentile-work_1126809 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 1126809; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_1126809"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_1126809 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="1126809"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 1126809; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=1126809]").text(description); $(".js-view-count-work_1126809").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_1126809").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="1126809"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="3855" href="https://www.academia.edu/Documents/in/Polymorphism">Polymorphism</a>,&nbsp;<script data-card-contents-for-ri="3855" type="text/json">{"id":3855,"name":"Polymorphism","url":"https://www.academia.edu/Documents/in/Polymorphism?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="19795" href="https://www.academia.edu/Documents/in/Theorem_Proving">Theorem Proving</a>,&nbsp;<script data-card-contents-for-ri="19795" type="text/json">{"id":19795,"name":"Theorem Proving","url":"https://www.academia.edu/Documents/in/Theorem_Proving?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="53994" href="https://www.academia.edu/Documents/in/Data_Structure">Data Structure</a><script data-card-contents-for-ri="53994" type="text/json">{"id":53994,"name":"Data Structure","url":"https://www.academia.edu/Documents/in/Data_Structure?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=1126809]'), work: {"id":1126809,"title":"Imperative functional programming with Isabelle/HOL","created_at":"2011-11-30T13:55:46.179-08:00","url":"https://www.academia.edu/1126809/Imperative_functional_programming_with_Isabelle_HOL?f_ri=454","dom_id":"work_1126809","summary":"in Montreal, Canada. TPHOLs covers all aspects of theorem proving in higher order logics as well as related topics in theorem proving and verification.","downloadable_attachments":[{"id":6957699,"asset_id":1126809,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":999692,"first_name":"Levent","last_name":"Erkok","domain_name":"independent","page_name":"LeventErkok","display_name":"Levent Erkok","profile_url":"https://independent.academia.edu/LeventErkok?f_ri=454","photo":"https://gravatar.com/avatar/b5d8868742cf3172c2a34fb6aeb1c0cd?s=65"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":3855,"name":"Polymorphism","url":"https://www.academia.edu/Documents/in/Polymorphism?f_ri=454","nofollow":false},{"id":19795,"name":"Theorem Proving","url":"https://www.academia.edu/Documents/in/Theorem_Proving?f_ri=454","nofollow":false},{"id":53994,"name":"Data Structure","url":"https://www.academia.edu/Documents/in/Data_Structure?f_ri=454","nofollow":false},{"id":96047,"name":"Case Study","url":"https://www.academia.edu/Documents/in/Case_Study?f_ri=454"},{"id":135177,"name":"Code Generation","url":"https://www.academia.edu/Documents/in/Code_Generation?f_ri=454"},{"id":310878,"name":"Proof assistant","url":"https://www.academia.edu/Documents/in/Proof_assistant?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_23687564 coauthored" data-work_id="23687564" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/23687564/Functional_programming_and_parallel_graph_rewriting">Functional programming and parallel graph rewriting</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">In a declarative programming language a computation is expressed in a static fashion, as a list of declarations. A program in such a language is regarded as a specification that happens to be executable as well. In this textbook we focus... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_23687564" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">In a declarative programming language a computation is expressed in a static fashion, as a list of declarations. A program in such a language is regarded as a specification that happens to be executable as well. In this textbook we focus on a subclass of the declarative languages, the functional programming languages, sometimes called applicative languages. In these languages a program consists of a list of function definitions. The execution of a program consists of the evaluation of a function application given the ...</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/23687564" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="5efd7097738c7d831b173a3961039d7f" rel="nofollow" data-download="{&quot;attachment_id&quot;:44093343,&quot;asset_id&quot;:23687564,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/44093343/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="45759967" href="https://independent.academia.edu/RPlasmeijer">Rinus Plasmeijer</a><script data-card-contents-for-user="45759967" type="text/json">{"id":45759967,"first_name":"Rinus","last_name":"Plasmeijer","domain_name":"independent","page_name":"RPlasmeijer","display_name":"Rinus Plasmeijer","profile_url":"https://independent.academia.edu/RPlasmeijer?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span><span class="u-displayInlineBlock InlineList-item-text">&nbsp;and&nbsp;<span class="u-textDecorationUnderline u-clickable InlineList-item-text js-work-more-authors-23687564">+1</span><div class="hidden js-additional-users-23687564"><div><span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a href="https://jic.academia.edu/RichardKennaway">Richard Kennaway</a></span></div></div></span><script>(function(){ var popoverSettings = { el: $('.js-work-more-authors-23687564'), placement: 'bottom', hide_delay: 200, html: true, content: function(){ return $('.js-additional-users-23687564').html(); } } new HoverPopover(popoverSettings); })();</script></li><li class="js-paper-rank-work_23687564 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="23687564"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 23687564, container: ".js-paper-rank-work_23687564", }); });</script></li><li class="js-percentile-work_23687564 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 23687564; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_23687564"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_23687564 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="23687564"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 23687564; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=23687564]").text(description); $(".js-view-count-work_23687564").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_23687564").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="23687564"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">2</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="198307" href="https://www.academia.edu/Documents/in/Graph_Rewriting">Graph Rewriting</a><script data-card-contents-for-ri="198307" type="text/json">{"id":198307,"name":"Graph Rewriting","url":"https://www.academia.edu/Documents/in/Graph_Rewriting?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=23687564]'), work: {"id":23687564,"title":"Functional programming and parallel graph rewriting","created_at":"2016-03-25T03:32:30.764-07:00","url":"https://www.academia.edu/23687564/Functional_programming_and_parallel_graph_rewriting?f_ri=454","dom_id":"work_23687564","summary":"In a declarative programming language a computation is expressed in a static fashion, as a list of declarations. A program in such a language is regarded as a specification that happens to be executable as well. In this textbook we focus on a subclass of the declarative languages, the functional programming languages, sometimes called applicative languages. In these languages a program consists of a list of function definitions. The execution of a program consists of the evaluation of a function application given the ...","downloadable_attachments":[{"id":44093343,"asset_id":23687564,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":45759967,"first_name":"Rinus","last_name":"Plasmeijer","domain_name":"independent","page_name":"RPlasmeijer","display_name":"Rinus Plasmeijer","profile_url":"https://independent.academia.edu/RPlasmeijer?f_ri=454","photo":"/images/s65_no_pic.png"},{"id":2994643,"first_name":"Richard","last_name":"Kennaway","domain_name":"jic","page_name":"RichardKennaway","display_name":"Richard Kennaway","profile_url":"https://jic.academia.edu/RichardKennaway?f_ri=454","photo":"https://0.academia-photos.com/2994643/9640806/10738284/s65_richard.kennaway.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":198307,"name":"Graph Rewriting","url":"https://www.academia.edu/Documents/in/Graph_Rewriting?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_74384350" data-work_id="74384350" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/74384350/Red_black_trees_with_types">Red-black trees with types</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Chris Okasaki showed how to implement red-black trees in a functional programming language. Ralf Hinze incorporated even the invariants of such data structures into their types, using higher-order nested datatypes. We show how one can... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_74384350" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Chris Okasaki showed how to implement red-black trees in a functional programming language. Ralf Hinze incorporated even the invariants of such data structures into their types, using higher-order nested datatypes. We show how one can achieve something very similar without the usual performance penalty of such types, by combining the features of nested datatypes, phantom types and existential type variables.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/74384350" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="4956088df3d7396b3b1f427e340fd06f" rel="nofollow" data-download="{&quot;attachment_id&quot;:82556183,&quot;asset_id&quot;:74384350,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/82556183/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="38946347" href="https://independent.academia.edu/StefanKahrs">Stefan Kahrs</a><script data-card-contents-for-user="38946347" type="text/json">{"id":38946347,"first_name":"Stefan","last_name":"Kahrs","domain_name":"independent","page_name":"StefanKahrs","display_name":"Stefan Kahrs","profile_url":"https://independent.academia.edu/StefanKahrs?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_74384350 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="74384350"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 74384350, container: ".js-paper-rank-work_74384350", }); });</script></li><li class="js-percentile-work_74384350 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 74384350; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_74384350"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_74384350 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="74384350"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 74384350; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=74384350]").text(description); $(".js-view-count-work_74384350").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_74384350").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="74384350"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">5</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="305" href="https://www.academia.edu/Documents/in/Applied_Mathematics">Applied Mathematics</a>,&nbsp;<script data-card-contents-for-ri="305" type="text/json">{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="64561" href="https://www.academia.edu/Documents/in/Computer_Software">Computer Software</a><script data-card-contents-for-ri="64561" type="text/json">{"id":64561,"name":"Computer Software","url":"https://www.academia.edu/Documents/in/Computer_Software?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=74384350]'), work: {"id":74384350,"title":"Red-black trees with types","created_at":"2022-03-23T07:05:45.533-07:00","url":"https://www.academia.edu/74384350/Red_black_trees_with_types?f_ri=454","dom_id":"work_74384350","summary":"Chris Okasaki showed how to implement red-black trees in a functional programming language. Ralf Hinze incorporated even the invariants of such data structures into their types, using higher-order nested datatypes. We show how one can achieve something very similar without the usual performance penalty of such types, by combining the features of nested datatypes, phantom types and existential type variables.","downloadable_attachments":[{"id":82556183,"asset_id":74384350,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":38946347,"first_name":"Stefan","last_name":"Kahrs","domain_name":"independent","page_name":"StefanKahrs","display_name":"Stefan Kahrs","profile_url":"https://independent.academia.edu/StefanKahrs?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false},{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":64561,"name":"Computer Software","url":"https://www.academia.edu/Documents/in/Computer_Software?f_ri=454","nofollow":false},{"id":556845,"name":"Numerical Analysis and Computational Mathematics","url":"https://www.academia.edu/Documents/in/Numerical_Analysis_and_Computational_Mathematics?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_73432302" data-work_id="73432302" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/73432302/Engineering_software_correctness">Engineering software correctness</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Software engineering courses offer one of many opportunities for providing students with a significant experience in declarative programming. This report discusses some results from taking advantage of this opportunity in a two-semester... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_73432302" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Software engineering courses offer one of many opportunities for providing students with a significant experience in declarative programming. This report discusses some results from taking advantage of this opportunity in a two-semester sequence of software engineering courses for students in their final year of baccalaureate studies in computer science. The sequence is based on functional programming using ACL2, a purely</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/73432302" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="87b9e92e3d18116d0b30d69d87737450" rel="nofollow" data-download="{&quot;attachment_id&quot;:81956062,&quot;asset_id&quot;:73432302,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/81956062/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="43411595" href="https://independent.academia.edu/RexPage">Rex Page</a><script data-card-contents-for-user="43411595" type="text/json">{"id":43411595,"first_name":"Rex","last_name":"Page","domain_name":"independent","page_name":"RexPage","display_name":"Rex Page","profile_url":"https://independent.academia.edu/RexPage?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_73432302 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="73432302"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 73432302, container: ".js-paper-rank-work_73432302", }); });</script></li><li class="js-percentile-work_73432302 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 73432302; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_73432302"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_73432302 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="73432302"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 73432302; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=73432302]").text(description); $(".js-view-count-work_73432302").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_73432302").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="73432302"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">8</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="2010" href="https://www.academia.edu/Documents/in/Computational_Logic">Computational Logic</a><script data-card-contents-for-ri="2010" type="text/json">{"id":2010,"name":"Computational Logic","url":"https://www.academia.edu/Documents/in/Computational_Logic?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=73432302]'), work: {"id":73432302,"title":"Engineering software correctness","created_at":"2022-03-09T16:11:49.084-08:00","url":"https://www.academia.edu/73432302/Engineering_software_correctness?f_ri=454","dom_id":"work_73432302","summary":"Software engineering courses offer one of many opportunities for providing students with a significant experience in declarative programming. This report discusses some results from taking advantage of this opportunity in a two-semester sequence of software engineering courses for students in their final year of baccalaureate studies in computer science. The sequence is based on functional programming using ACL2, a purely","downloadable_attachments":[{"id":81956062,"asset_id":73432302,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":43411595,"first_name":"Rex","last_name":"Page","domain_name":"independent","page_name":"RexPage","display_name":"Rex Page","profile_url":"https://independent.academia.edu/RexPage?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":2010,"name":"Computational Logic","url":"https://www.academia.edu/Documents/in/Computational_Logic?f_ri=454","nofollow":false},{"id":8129,"name":"Software Development","url":"https://www.academia.edu/Documents/in/Software_Development?f_ri=454"},{"id":9967,"name":"Software Engineering education","url":"https://www.academia.edu/Documents/in/Software_Engineering_education?f_ri=454"},{"id":55036,"name":"LISP","url":"https://www.academia.edu/Documents/in/LISP?f_ri=454"},{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_1461517 coauthored" data-work_id="1461517" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/1461517/Translating_Haskell_Programs_into_Petri_Nets">Translating Haskell# Programs into Petri Nets</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Abstract Haskell# is a concurrent programming environment aimed at parallel distributed architectures. Haskell# programs may be automatically translated to Petri nets, an important formalism for analysis of properties of concurrent and... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_1461517" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Abstract Haskell# is a concurrent programming environment aimed at parallel distributed architectures. Haskell# programs may be automatically translated to Petri nets, an important formalism for analysis of properties of concurrent and non-determinisc systems. This paper motivates and formalizes the translation of Haskell# programs into Petri nets, providing some examples of their usage.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/1461517" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="a50031332e6cd692d063246cb99b6268" rel="nofollow" data-download="{&quot;attachment_id&quot;:11498055,&quot;asset_id&quot;:1461517,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/11498055/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="1266285" href="https://ufc.academia.edu/FranciscoCarvalhoJunior">Francisco H de Carvalho Junior</a><script data-card-contents-for-user="1266285" type="text/json">{"id":1266285,"first_name":"Francisco","last_name":"de Carvalho Junior","domain_name":"ufc","page_name":"FranciscoCarvalhoJunior","display_name":"Francisco H de Carvalho Junior","profile_url":"https://ufc.academia.edu/FranciscoCarvalhoJunior?f_ri=454","photo":"https://0.academia-photos.com/1266285/464428/583090/s65_francisco.carvalho-junior.jpg"}</script></span></span><span class="u-displayInlineBlock InlineList-item-text">&nbsp;and&nbsp;<span class="u-textDecorationUnderline u-clickable InlineList-item-text js-work-more-authors-1461517">+1</span><div class="hidden js-additional-users-1461517"><div><span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a href="https://ufpe.academia.edu/RafaelLins">Rafael Dueire Lins</a></span></div></div></span><script>(function(){ var popoverSettings = { el: $('.js-work-more-authors-1461517'), placement: 'bottom', hide_delay: 200, html: true, content: function(){ return $('.js-additional-users-1461517').html(); } } new HoverPopover(popoverSettings); })();</script></li><li class="js-paper-rank-work_1461517 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="1461517"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 1461517, container: ".js-paper-rank-work_1461517", }); });</script></li><li class="js-percentile-work_1461517 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 1461517; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_1461517"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_1461517 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="1461517"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 1461517; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=1461517]").text(description); $(".js-view-count-work_1461517").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_1461517").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="1461517"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="442" href="https://www.academia.edu/Documents/in/Parallel_Computing">Parallel Computing</a>,&nbsp;<script data-card-contents-for-ri="442" type="text/json">{"id":442,"name":"Parallel Computing","url":"https://www.academia.edu/Documents/in/Parallel_Computing?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="450" href="https://www.academia.edu/Documents/in/Formal_Methods_Formal_Verification_">Formal Methods (Formal Verification)</a>,&nbsp;<script data-card-contents-for-ri="450" type="text/json">{"id":450,"name":"Formal Methods (Formal Verification)","url":"https://www.academia.edu/Documents/in/Formal_Methods_Formal_Verification_?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="20250" href="https://www.academia.edu/Documents/in/Petri_Nets">Petri Nets</a><script data-card-contents-for-ri="20250" type="text/json">{"id":20250,"name":"Petri Nets","url":"https://www.academia.edu/Documents/in/Petri_Nets?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=1461517]'), work: {"id":1461517,"title":"Translating Haskell# Programs into Petri Nets","created_at":"2012-03-04T20:30:14.415-08:00","url":"https://www.academia.edu/1461517/Translating_Haskell_Programs_into_Petri_Nets?f_ri=454","dom_id":"work_1461517","summary":"Abstract Haskell# is a concurrent programming environment aimed at parallel distributed architectures. Haskell# programs may be automatically translated to Petri nets, an important formalism for analysis of properties of concurrent and non-determinisc systems. This paper motivates and formalizes the translation of Haskell# programs into Petri nets, providing some examples of their usage.","downloadable_attachments":[{"id":11498055,"asset_id":1461517,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":1266285,"first_name":"Francisco","last_name":"de Carvalho Junior","domain_name":"ufc","page_name":"FranciscoCarvalhoJunior","display_name":"Francisco H de Carvalho Junior","profile_url":"https://ufc.academia.edu/FranciscoCarvalhoJunior?f_ri=454","photo":"https://0.academia-photos.com/1266285/464428/583090/s65_francisco.carvalho-junior.jpg"},{"id":23671603,"first_name":"Rafael","last_name":"Dueire Lins","domain_name":"ufpe","page_name":"RafaelLins","display_name":"Rafael Dueire Lins","profile_url":"https://ufpe.academia.edu/RafaelLins?f_ri=454","photo":"https://0.academia-photos.com/23671603/6417536/12945241/s65_rafael.lins.jpg"}],"research_interests":[{"id":442,"name":"Parallel Computing","url":"https://www.academia.edu/Documents/in/Parallel_Computing?f_ri=454","nofollow":false},{"id":450,"name":"Formal Methods (Formal Verification)","url":"https://www.academia.edu/Documents/in/Formal_Methods_Formal_Verification_?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":20250,"name":"Petri Nets","url":"https://www.academia.edu/Documents/in/Petri_Nets?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_47456953" data-work_id="47456953" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/47456953/Functional_programming_in_Clean">Functional programming in Clean</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Functional languages enable programmers to concentrate on the problem one would like to solve without being forced to worry too much about all kinds of uninteresting implementation details. A functional program can be regarded as an... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_47456953" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Functional languages enable programmers to concentrate on the problem one would like to solve without being forced to worry too much about all kinds of uninteresting implementation details. A functional program can be regarded as an executable specification. Functional programming languages are therefore popular in educational and research environments. Functional languages are very suited for teaching students the first principles of programming. In research environments they are used for rapid prototyping of complex systems. Recent developments in the implementation techniques and new insights in the underlying concepts such as input/output handling make that modern functional languages can nowadays also be used successfully for the development of real world applications.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/47456953" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="ac44e3322710512c582f12a0c80740ae" rel="nofollow" data-download="{&quot;attachment_id&quot;:66540252,&quot;asset_id&quot;:47456953,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/66540252/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="45759967" href="https://independent.academia.edu/RPlasmeijer">Rinus Plasmeijer</a><script data-card-contents-for-user="45759967" type="text/json">{"id":45759967,"first_name":"Rinus","last_name":"Plasmeijer","domain_name":"independent","page_name":"RPlasmeijer","display_name":"Rinus Plasmeijer","profile_url":"https://independent.academia.edu/RPlasmeijer?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_47456953 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="47456953"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 47456953, container: ".js-paper-rank-work_47456953", }); });</script></li><li class="js-percentile-work_47456953 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 47456953; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_47456953"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_47456953 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="47456953"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 47456953; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=47456953]").text(description); $(".js-view-count-work_47456953").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_47456953").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="47456953"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i></div><span class="InlineList-item-text u-textTruncate u-pl6x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a><script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (false) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=47456953]'), work: {"id":47456953,"title":"Functional programming in Clean","created_at":"2021-04-22T08:39:40.573-07:00","url":"https://www.academia.edu/47456953/Functional_programming_in_Clean?f_ri=454","dom_id":"work_47456953","summary":"Functional languages enable programmers to concentrate on the problem one would like to solve without being forced to worry too much about all kinds of uninteresting implementation details. A functional program can be regarded as an executable specification. Functional programming languages are therefore popular in educational and research environments. Functional languages are very suited for teaching students the first principles of programming. In research environments they are used for rapid prototyping of complex systems. Recent developments in the implementation techniques and new insights in the underlying concepts such as input/output handling make that modern functional languages can nowadays also be used successfully for the development of real world applications.","downloadable_attachments":[{"id":66540252,"asset_id":47456953,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":45759967,"first_name":"Rinus","last_name":"Plasmeijer","domain_name":"independent","page_name":"RPlasmeijer","display_name":"Rinus Plasmeijer","profile_url":"https://independent.academia.edu/RPlasmeijer?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_407414" data-work_id="407414" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/407414/Object_Oriented_Programming_Tutorial">Object Oriented Programming, Tutorial</a></div></div><div class="u-pb4x u-mt3x"></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/407414" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="b3338c1ce81d76e362aaf62b0b92761b" rel="nofollow" data-download="{&quot;attachment_id&quot;:3041180,&quot;asset_id&quot;:407414,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/3041180/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="307144" href="https://uam.academia.edu/ManuelAlfonseca">Manuel Alfonseca</a><script data-card-contents-for-user="307144" type="text/json">{"id":307144,"first_name":"Manuel","last_name":"Alfonseca","domain_name":"uam","page_name":"ManuelAlfonseca","display_name":"Manuel Alfonseca","profile_url":"https://uam.academia.edu/ManuelAlfonseca?f_ri=454","photo":"https://0.academia-photos.com/307144/3035408/3567272/s65_manuel.alfonseca.gif"}</script></span></span></li><li class="js-paper-rank-work_407414 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="407414"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 407414, container: ".js-paper-rank-work_407414", }); });</script></li><li class="js-percentile-work_407414 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 407414; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_407414"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_407414 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="407414"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 407414; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=407414]").text(description); $(".js-view-count-work_407414").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_407414").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="407414"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">5</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="453" href="https://www.academia.edu/Documents/in/Object_Oriented_Programming">Object Oriented Programming</a>,&nbsp;<script data-card-contents-for-ri="453" type="text/json">{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="11119" href="https://www.academia.edu/Documents/in/User_Interface">User Interface</a>,&nbsp;<script data-card-contents-for-ri="11119" type="text/json">{"id":11119,"name":"User Interface","url":"https://www.academia.edu/Documents/in/User_Interface?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="887157" href="https://www.academia.edu/Documents/in/Cobol">Cobol</a><script data-card-contents-for-ri="887157" type="text/json">{"id":887157,"name":"Cobol","url":"https://www.academia.edu/Documents/in/Cobol?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=407414]'), work: {"id":407414,"title":"Object Oriented Programming, Tutorial","created_at":"2011-01-10T03:27:07.326-08:00","url":"https://www.academia.edu/407414/Object_Oriented_Programming_Tutorial?f_ri=454","dom_id":"work_407414","summary":null,"downloadable_attachments":[{"id":3041180,"asset_id":407414,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":307144,"first_name":"Manuel","last_name":"Alfonseca","domain_name":"uam","page_name":"ManuelAlfonseca","display_name":"Manuel Alfonseca","profile_url":"https://uam.academia.edu/ManuelAlfonseca?f_ri=454","photo":"https://0.academia-photos.com/307144/3035408/3567272/s65_manuel.alfonseca.gif"}],"research_interests":[{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":11119,"name":"User Interface","url":"https://www.academia.edu/Documents/in/User_Interface?f_ri=454","nofollow":false},{"id":887157,"name":"Cobol","url":"https://www.academia.edu/Documents/in/Cobol?f_ri=454","nofollow":false},{"id":2364406,"name":"Visual Inspection","url":"https://www.academia.edu/Documents/in/Visual_Inspection?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_34718147" data-work_id="34718147" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/34718147/Funktionale_Programmierung_und_Metaprogrammierung">Funktionale Programmierung und Metaprogrammierung</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">* € (D) sind gebundene Ladenpreise in Deutschland und enthalten 7% MwSt; € (A) sind gebundene Ladenpreise in Österreich und enthalten 10% MwSt. CHF und die mit ** gekennzeichneten Preise für elektronische Produkte sind unverbindliche... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_34718147" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">* € (D) sind gebundene Ladenpreise in Deutschland und enthalten 7% MwSt; € (A) sind gebundene Ladenpreise in Österreich und enthalten 10% MwSt. CHF und die mit ** gekennzeichneten Preise für elektronische Produkte sind unverbindliche Preisempfehlungen und enthalten die landesübliche MwSt. Programm-und Preisänderungen (auch bei Irrtümern) vorbehalten. Es gelten unsere Allgemeinen Liefer-und Zahlungsbedingungen. Interaktiv in Common Lisp ▶ Behandelt theoretische und praktische Aspekte der Programmiersprache Common Lisp ▶ Motiviert den Leser zum Ausprobieren ▶ Bietet zahlreiche Übungsmöglichkeiten Dieses Buch vermittelt die einzigartige Idee hinter der Programmiersprache Lisp. Aus der Verbindung von interaktiver und funktionaler Programmierung entsteht eine Arbeitsstrategie in der Software-Entwicklung, mit der ein Programmierer schneller als mit konventionellen Verfahren einen korrekten, verständlichen und leicht anpassbaren Code entwickeln kann. Durch die Anwendung algebraischer Methoden auf die wandelbare Sprache Common Lisp lernt der Leser, bekannte Probleme der Anwendungsprogrammierung neu zu denken und dadurch zu präzisen und bündigen Lösungen zu kommen. Der Autor veranschaulicht an mehreren Beispielen aus der Praxis die Nutzung der Programmiersprache und motiviert den Leser, sich selbst mit Common Lisp zu befassen. Der Inhalt • Elementares Lisp • Common Lisp • Funktionale Programmierung &lt; • Rekursionsstrukturen • Kategorientheorie • Programmieren mit Morphismen • Metaprogrammierung mit Lisp-Makros • Der metazirkuläre Interpreter Die Zielgruppe • Informatiker • Software-Entwickler • Praktiker und Mathematiker mit Interesse an funktionaler Programmierung Der Autor Patrick M. Krusenotto studierte Informatik an der Universität Bonn und ist Systemarchitekt beim Auslandsrundfunk Deutsche Welle.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/34718147" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="80b946c61d7cebc762139a918f228d56" rel="nofollow" data-download="{&quot;attachment_id&quot;:54574868,&quot;asset_id&quot;:34718147,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/54574868/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="35304909" href="https://independent.academia.edu/PatrickKrusenotto">Patrick M Krusenotto</a><script data-card-contents-for-user="35304909" type="text/json">{"id":35304909,"first_name":"Patrick","last_name":"Krusenotto","domain_name":"independent","page_name":"PatrickKrusenotto","display_name":"Patrick M Krusenotto","profile_url":"https://independent.academia.edu/PatrickKrusenotto?f_ri=454","photo":"https://0.academia-photos.com/35304909/75377217/63886971/s65_patrick.krusenotto.png"}</script></span></span></li><li class="js-paper-rank-work_34718147 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="34718147"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 34718147, container: ".js-paper-rank-work_34718147", }); });</script></li><li class="js-percentile-work_34718147 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 34718147; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_34718147"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_34718147 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="34718147"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 34718147; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=34718147]").text(description); $(".js-view-count-work_34718147").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_34718147").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="34718147"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="6571" href="https://www.academia.edu/Documents/in/Category_Theory">Category Theory</a>,&nbsp;<script data-card-contents-for-ri="6571" type="text/json">{"id":6571,"name":"Category Theory","url":"https://www.academia.edu/Documents/in/Category_Theory?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="109613" href="https://www.academia.edu/Documents/in/Metaprogramming">Metaprogramming</a>,&nbsp;<script data-card-contents-for-ri="109613" type="text/json">{"id":109613,"name":"Metaprogramming","url":"https://www.academia.edu/Documents/in/Metaprogramming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="476371" href="https://www.academia.edu/Documents/in/Common_Lisp">Common Lisp</a><script data-card-contents-for-ri="476371" type="text/json">{"id":476371,"name":"Common Lisp","url":"https://www.academia.edu/Documents/in/Common_Lisp?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=34718147]'), work: {"id":34718147,"title":"Funktionale Programmierung und Metaprogrammierung","created_at":"2017-09-29T08:16:16.717-07:00","url":"https://www.academia.edu/34718147/Funktionale_Programmierung_und_Metaprogrammierung?f_ri=454","dom_id":"work_34718147","summary":"* € (D) sind gebundene Ladenpreise in Deutschland und enthalten 7% MwSt; € (A) sind gebundene Ladenpreise in Österreich und enthalten 10% MwSt. CHF und die mit ** gekennzeichneten Preise für elektronische Produkte sind unverbindliche Preisempfehlungen und enthalten die landesübliche MwSt. Programm-und Preisänderungen (auch bei Irrtümern) vorbehalten. Es gelten unsere Allgemeinen Liefer-und Zahlungsbedingungen. Interaktiv in Common Lisp ▶ Behandelt theoretische und praktische Aspekte der Programmiersprache Common Lisp ▶ Motiviert den Leser zum Ausprobieren ▶ Bietet zahlreiche Übungsmöglichkeiten Dieses Buch vermittelt die einzigartige Idee hinter der Programmiersprache Lisp. Aus der Verbindung von interaktiver und funktionaler Programmierung entsteht eine Arbeitsstrategie in der Software-Entwicklung, mit der ein Programmierer schneller als mit konventionellen Verfahren einen korrekten, verständlichen und leicht anpassbaren Code entwickeln kann. Durch die Anwendung algebraischer Methoden auf die wandelbare Sprache Common Lisp lernt der Leser, bekannte Probleme der Anwendungsprogrammierung neu zu denken und dadurch zu präzisen und bündigen Lösungen zu kommen. Der Autor veranschaulicht an mehreren Beispielen aus der Praxis die Nutzung der Programmiersprache und motiviert den Leser, sich selbst mit Common Lisp zu befassen. Der Inhalt • Elementares Lisp • Common Lisp • Funktionale Programmierung \u003c • Rekursionsstrukturen • Kategorientheorie • Programmieren mit Morphismen • Metaprogrammierung mit Lisp-Makros • Der metazirkuläre Interpreter Die Zielgruppe • Informatiker • Software-Entwickler • Praktiker und Mathematiker mit Interesse an funktionaler Programmierung Der Autor Patrick M. Krusenotto studierte Informatik an der Universität Bonn und ist Systemarchitekt beim Auslandsrundfunk Deutsche Welle.","downloadable_attachments":[{"id":54574868,"asset_id":34718147,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":35304909,"first_name":"Patrick","last_name":"Krusenotto","domain_name":"independent","page_name":"PatrickKrusenotto","display_name":"Patrick M Krusenotto","profile_url":"https://independent.academia.edu/PatrickKrusenotto?f_ri=454","photo":"https://0.academia-photos.com/35304909/75377217/63886971/s65_patrick.krusenotto.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":6571,"name":"Category Theory","url":"https://www.academia.edu/Documents/in/Category_Theory?f_ri=454","nofollow":false},{"id":109613,"name":"Metaprogramming","url":"https://www.academia.edu/Documents/in/Metaprogramming?f_ri=454","nofollow":false},{"id":476371,"name":"Common Lisp","url":"https://www.academia.edu/Documents/in/Common_Lisp?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_48721480" data-work_id="48721480" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/48721480/XLambda_A_functional_programming_language_with_XML_syntax">XLambda: A functional programming language with XML syntax</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">We describe XLambda, a functional language with XML syntax, and its processor which is implemented fully and completely in XSLT. XLambda has all the basic features of a functional language, such as defining named functions, operations on... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_48721480" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">We describe XLambda, a functional language with XML syntax, and its processor which is implemented fully and completely in XSLT. XLambda has all the basic features of a functional language, such as defining named functions, operations on numbers, passing functions as parameters, constructing arbitrary data structures etc. What sets XLambda apart from the rest of the functional languages is not its feature set though, but rather its syntax and processor which is implemented as an XSLT stylesheet. Since most Web browsers have XSLT processors already built in, XLambda has the potential to be used as a scripting language in Browsers, much in the same way as JavaScript, among other possibilities.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/48721480" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="740a3ad0c9b8c95e836f5d20d8a15c75" rel="nofollow" data-download="{&quot;attachment_id&quot;:67188473,&quot;asset_id&quot;:48721480,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/67188473/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="87844" href="https://emu.academia.edu/ZekiBayram">Zeki Bayram</a><script data-card-contents-for-user="87844" type="text/json">{"id":87844,"first_name":"Zeki","last_name":"Bayram","domain_name":"emu","page_name":"ZekiBayram","display_name":"Zeki Bayram","profile_url":"https://emu.academia.edu/ZekiBayram?f_ri=454","photo":"https://0.academia-photos.com/87844/24486/22600/s65_zeki.bayram.jpeg"}</script></span></span></li><li class="js-paper-rank-work_48721480 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="48721480"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 48721480, container: ".js-paper-rank-work_48721480", }); });</script></li><li class="js-percentile-work_48721480 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 48721480; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_48721480"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_48721480 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="48721480"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 48721480; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=48721480]").text(description); $(".js-view-count-work_48721480").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_48721480").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="48721480"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="3268" href="https://www.academia.edu/Documents/in/Computational_Linguistics">Computational Linguistics</a>,&nbsp;<script data-card-contents-for-ri="3268" type="text/json">{"id":3268,"name":"Computational Linguistics","url":"https://www.academia.edu/Documents/in/Computational_Linguistics?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="5279" href="https://www.academia.edu/Documents/in/XML">XML</a>,&nbsp;<script data-card-contents-for-ri="5279" type="text/json">{"id":5279,"name":"XML","url":"https://www.academia.edu/Documents/in/XML?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="53994" href="https://www.academia.edu/Documents/in/Data_Structure">Data Structure</a><script data-card-contents-for-ri="53994" type="text/json">{"id":53994,"name":"Data Structure","url":"https://www.academia.edu/Documents/in/Data_Structure?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=48721480]'), work: {"id":48721480,"title":"XLambda: A functional programming language with XML syntax","created_at":"2021-05-05T07:14:40.350-07:00","url":"https://www.academia.edu/48721480/XLambda_A_functional_programming_language_with_XML_syntax?f_ri=454","dom_id":"work_48721480","summary":"We describe XLambda, a functional language with XML syntax, and its processor which is implemented fully and completely in XSLT. XLambda has all the basic features of a functional language, such as defining named functions, operations on numbers, passing functions as parameters, constructing arbitrary data structures etc. What sets XLambda apart from the rest of the functional languages is not its feature set though, but rather its syntax and processor which is implemented as an XSLT stylesheet. Since most Web browsers have XSLT processors already built in, XLambda has the potential to be used as a scripting language in Browsers, much in the same way as JavaScript, among other possibilities.","downloadable_attachments":[{"id":67188473,"asset_id":48721480,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":87844,"first_name":"Zeki","last_name":"Bayram","domain_name":"emu","page_name":"ZekiBayram","display_name":"Zeki Bayram","profile_url":"https://emu.academia.edu/ZekiBayram?f_ri=454","photo":"https://0.academia-photos.com/87844/24486/22600/s65_zeki.bayram.jpeg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":3268,"name":"Computational Linguistics","url":"https://www.academia.edu/Documents/in/Computational_Linguistics?f_ri=454","nofollow":false},{"id":5279,"name":"XML","url":"https://www.academia.edu/Documents/in/XML?f_ri=454","nofollow":false},{"id":53994,"name":"Data Structure","url":"https://www.academia.edu/Documents/in/Data_Structure?f_ri=454","nofollow":false},{"id":212702,"name":"Scripting Language","url":"https://www.academia.edu/Documents/in/Scripting_Language?f_ri=454"},{"id":371544,"name":"Functional Languages","url":"https://www.academia.edu/Documents/in/Functional_Languages?f_ri=454"},{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_44711128" data-work_id="44711128" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/44711128/Artificial_Intelligence_and_Machine_Learning">Artificial Intelligence and Machine Learning</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Thanks to more powerful hardware and a new generation of learning algorithms, artificial intelligence is supporting the automation of a number of tasks and activities that are changing the job landscape as much as they have impacted on... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_44711128" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Thanks to more powerful hardware and a new generation of learning algorithms, artificial intelligence is supporting the automation of a number of tasks and activities that are changing the job landscape as much as they have impacted on our everyday life. The first part of the chapter introduces artificial intelligence from its origins: its definition and its main research and application areas. The nature and the importance of machine learning for artificial intelligence applications are presented in the second part of the chapter. Existing approaches to machine learning are also classified and illustrated. The third part describes artificial intelligence tools and solutions by supported functionalities and automated tasks. Cases of applications in tourism are provided, from the best known and widely adopted, e.g., personal assistants, to the most challenging, i.e., semantic systems. Future trends and risks related to the applications of artificial intelligence are considered in the last part of the chapter.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/44711128" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="1167592" href="https://unitn.academia.edu/LuisaMich">Luisa Mich</a><script data-card-contents-for-user="1167592" type="text/json">{"id":1167592,"first_name":"Luisa","last_name":"Mich","domain_name":"unitn","page_name":"LuisaMich","display_name":"Luisa Mich","profile_url":"https://unitn.academia.edu/LuisaMich?f_ri=454","photo":"https://0.academia-photos.com/1167592/413931/18919239/s65_luisa.mich.jpg"}</script></span></span></li><li class="js-paper-rank-work_44711128 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="44711128"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 44711128, container: ".js-paper-rank-work_44711128", }); });</script></li><li class="js-percentile-work_44711128 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 44711128; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_44711128"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_44711128 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="44711128"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 44711128; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=44711128]").text(description); $(".js-view-count-work_44711128").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_44711128").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="44711128"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">15</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="465" href="https://www.academia.edu/Documents/in/Artificial_Intelligence">Artificial Intelligence</a>,&nbsp;<script data-card-contents-for-ri="465" type="text/json">{"id":465,"name":"Artificial Intelligence","url":"https://www.academia.edu/Documents/in/Artificial_Intelligence?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="470" href="https://www.academia.edu/Documents/in/Expert_Systems">Expert Systems</a>,&nbsp;<script data-card-contents-for-ri="470" type="text/json">{"id":470,"name":"Expert Systems","url":"https://www.academia.edu/Documents/in/Expert_Systems?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="2008" href="https://www.academia.edu/Documents/in/Machine_Learning">Machine Learning</a><script data-card-contents-for-ri="2008" type="text/json">{"id":2008,"name":"Machine Learning","url":"https://www.academia.edu/Documents/in/Machine_Learning?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=44711128]'), work: {"id":44711128,"title":"Artificial Intelligence and Machine Learning","created_at":"2020-12-15T09:52:24.942-08:00","url":"https://www.academia.edu/44711128/Artificial_Intelligence_and_Machine_Learning?f_ri=454","dom_id":"work_44711128","summary":"Thanks to more powerful hardware and a new generation of learning algorithms, artificial intelligence is supporting the automation of a number of tasks and activities that are changing the job landscape as much as they have impacted on our everyday life. The first part of the chapter introduces artificial intelligence from its origins: its definition and its main research and application areas. The nature and the importance of machine learning for artificial intelligence applications are presented in the second part of the chapter. Existing approaches to machine learning are also classified and illustrated. The third part describes artificial intelligence tools and solutions by supported functionalities and automated tasks. Cases of applications in tourism are provided, from the best known and widely adopted, e.g., personal assistants, to the most challenging, i.e., semantic systems. Future trends and risks related to the applications of artificial intelligence are considered in the last part of the chapter.","downloadable_attachments":[],"ordered_authors":[{"id":1167592,"first_name":"Luisa","last_name":"Mich","domain_name":"unitn","page_name":"LuisaMich","display_name":"Luisa Mich","profile_url":"https://unitn.academia.edu/LuisaMich?f_ri=454","photo":"https://0.academia-photos.com/1167592/413931/18919239/s65_luisa.mich.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":465,"name":"Artificial Intelligence","url":"https://www.academia.edu/Documents/in/Artificial_Intelligence?f_ri=454","nofollow":false},{"id":470,"name":"Expert Systems","url":"https://www.academia.edu/Documents/in/Expert_Systems?f_ri=454","nofollow":false},{"id":2008,"name":"Machine Learning","url":"https://www.academia.edu/Documents/in/Machine_Learning?f_ri=454","nofollow":false},{"id":2529,"name":"Logic Programming","url":"https://www.academia.edu/Documents/in/Logic_Programming?f_ri=454"},{"id":10516,"name":"Etourism","url":"https://www.academia.edu/Documents/in/Etourism?f_ri=454"},{"id":20641,"name":"Future of artificial intelligence","url":"https://www.academia.edu/Documents/in/Future_of_artificial_intelligence?f_ri=454"},{"id":27006,"name":"Supervised Learning Techniques","url":"https://www.academia.edu/Documents/in/Supervised_Learning_Techniques?f_ri=454"},{"id":27008,"name":"Unsupervised Learning Techniques","url":"https://www.academia.edu/Documents/in/Unsupervised_Learning_Techniques?f_ri=454"},{"id":54123,"name":"Artificial Neural Networks","url":"https://www.academia.edu/Documents/in/Artificial_Neural_Networks?f_ri=454"},{"id":71155,"name":"History of Computer Sciences","url":"https://www.academia.edu/Documents/in/History_of_Computer_Sciences?f_ri=454"},{"id":89919,"name":"Robots","url":"https://www.academia.edu/Documents/in/Robots?f_ri=454"},{"id":105744,"name":"IBM Watson","url":"https://www.academia.edu/Documents/in/IBM_Watson?f_ri=454"},{"id":110971,"name":"Chatbots","url":"https://www.academia.edu/Documents/in/Chatbots?f_ri=454"},{"id":246161,"name":"Virtual Assistant","url":"https://www.academia.edu/Documents/in/Virtual_Assistant?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_32507287" data-work_id="32507287" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/32507287/Category_Theory_and_Haskell_Parallel_Universes">Category Theory and Haskell: Parallel Universes</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest">These are the slides for a talk that we gave on April 19, 2017 at the Canberra Functional Programming Group. It is a work in progress, so comments and feedback are welcome.</div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/32507287" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="8243e461f1a5ee4258cc2ed0b08e0d88" rel="nofollow" data-download="{&quot;attachment_id&quot;:52692600,&quot;asset_id&quot;:32507287,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/52692600/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="6043905" href="https://uq.academia.edu/SivaKalyan">Siva Kalyan</a><script data-card-contents-for-user="6043905" type="text/json">{"id":6043905,"first_name":"Siva","last_name":"Kalyan","domain_name":"uq","page_name":"SivaKalyan","display_name":"Siva Kalyan","profile_url":"https://uq.academia.edu/SivaKalyan?f_ri=454","photo":"https://0.academia-photos.com/6043905/2544990/10864004/s65_siva.kalyan.jpg"}</script></span></span></li><li class="js-paper-rank-work_32507287 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="32507287"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 32507287, container: ".js-paper-rank-work_32507287", }); });</script></li><li class="js-percentile-work_32507287 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 32507287; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_32507287"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_32507287 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="32507287"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 32507287; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=32507287]").text(description); $(".js-view-count-work_32507287").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_32507287").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="32507287"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="6571" href="https://www.academia.edu/Documents/in/Category_Theory">Category Theory</a>,&nbsp;<script data-card-contents-for-ri="6571" type="text/json">{"id":6571,"name":"Category Theory","url":"https://www.academia.edu/Documents/in/Category_Theory?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="27504" href="https://www.academia.edu/Documents/in/Haskell">Haskell</a>,&nbsp;<script data-card-contents-for-ri="27504" type="text/json">{"id":27504,"name":"Haskell","url":"https://www.academia.edu/Documents/in/Haskell?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="209327" href="https://www.academia.edu/Documents/in/Monads">Monads</a><script data-card-contents-for-ri="209327" type="text/json">{"id":209327,"name":"Monads","url":"https://www.academia.edu/Documents/in/Monads?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=32507287]'), work: {"id":32507287,"title":"Category Theory and Haskell: Parallel Universes","created_at":"2017-04-19T06:23:29.679-07:00","url":"https://www.academia.edu/32507287/Category_Theory_and_Haskell_Parallel_Universes?f_ri=454","dom_id":"work_32507287","summary":"These are the slides for a talk that we gave on April 19, 2017 at the Canberra Functional Programming Group. It is a work in progress, so comments and feedback are welcome.","downloadable_attachments":[{"id":52692600,"asset_id":32507287,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":6043905,"first_name":"Siva","last_name":"Kalyan","domain_name":"uq","page_name":"SivaKalyan","display_name":"Siva Kalyan","profile_url":"https://uq.academia.edu/SivaKalyan?f_ri=454","photo":"https://0.academia-photos.com/6043905/2544990/10864004/s65_siva.kalyan.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":6571,"name":"Category Theory","url":"https://www.academia.edu/Documents/in/Category_Theory?f_ri=454","nofollow":false},{"id":27504,"name":"Haskell","url":"https://www.academia.edu/Documents/in/Haskell?f_ri=454","nofollow":false},{"id":209327,"name":"Monads","url":"https://www.academia.edu/Documents/in/Monads?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_44489383" data-work_id="44489383" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/44489383/Programando_con_Racket_5">Programando con Racket 5</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Este libro evolucionó a partir del material preparado para las clases de la materia «Programación Funcional», impartida para la Carrera de Licenciatura en Ciencias de la Computación de la Universidad Centroamericana «José Simeón Cañas».... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_44489383" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Este libro evolucionó a partir del material preparado para las clases de la materia «Programación Funcional», impartida para la Carrera de Licenciatura en Ciencias de la Computación de la Universidad Centroamericana «José Simeón Cañas».<br /><br />Después de un año de trabajo, este libro incluye un recorrido por las características básicas del lenguaje Racket, en su versión 5.<br /><br />Racket 5 es la nueva versión de PLT Scheme , un sistema de programación de larga tradición en el aprendizaje de la programación de computadoras, a través del paradigma funcional, basándose en el lenguaje Scheme.<br /><br />Realmente no existe, formalmente hablando, un lenguaje llamado Scheme, sino que se le llama así a una familia de lenguajes de programación funcionales (véase el capítulo 1).<br /><br />En este libro, se discute específicamente el dialecto conocido como Racket (anteriormente PLT Scheme), uno de los más difundidos. Si se quiere un estudio más purista sobre Scheme, revise el estándar R5RS que también es soportado por el intérprete de Racket.<br /><br />Los temas abordados en la Parte I incluyen una introducción a la programación funcional, una sencilla guía de instalación de Racket y una introducción a la interacción con Racket y DrRacket.<br /><br />En la Parte II se introduce el lenguaje Racket en sí, a través de sus elementos básicos y los bloques lambda, característicos de la programación funcional.<br /><br />La Parte III describe los demás elementos del lenguaje y contiene múltiples ejercicios para que el lector practique sus nuevos conocimientos.<br /><br />Finalmente, la Parte IV muestra las capacidades de Racket para implementar programas con interfaces gráficas de usuario.<br /><br />Y por último, la Parte V incluye un anexo describiendo las diferencias entre la versión 5 de Racket y la serie 4.x de PLT Scheme.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/44489383" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="32cf1a00884f7c0616d0f5f48456993d" rel="nofollow" data-download="{&quot;attachment_id&quot;:64922134,&quot;asset_id&quot;:44489383,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/64922134/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="129515116" href="https://ues.academia.edu/EduardoAdamNavasLopez">Eduardo Adam Navas-Lopez</a><script data-card-contents-for-user="129515116" type="text/json">{"id":129515116,"first_name":"Eduardo Adam","last_name":"Navas-Lopez","domain_name":"ues","page_name":"EduardoAdamNavasLopez","display_name":"Eduardo Adam Navas-Lopez","profile_url":"https://ues.academia.edu/EduardoAdamNavasLopez?f_ri=454","photo":"https://0.academia-photos.com/129515116/46290975/37033562/s65_eduardo_adam.navas-lopez.jpg"}</script></span></span></li><li class="js-paper-rank-work_44489383 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="44489383"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 44489383, container: ".js-paper-rank-work_44489383", }); });</script></li><li class="js-percentile-work_44489383 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 44489383; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_44489383"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_44489383 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="44489383"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 44489383; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=44489383]").text(description); $(".js-view-count-work_44489383").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_44489383").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="44489383"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">2</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="51264" href="https://www.academia.edu/Documents/in/Computer_Programming">Computer Programming</a><script data-card-contents-for-ri="51264" type="text/json">{"id":51264,"name":"Computer Programming","url":"https://www.academia.edu/Documents/in/Computer_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=44489383]'), work: {"id":44489383,"title":"Programando con Racket 5","created_at":"2020-11-12T20:26:44.462-08:00","url":"https://www.academia.edu/44489383/Programando_con_Racket_5?f_ri=454","dom_id":"work_44489383","summary":"Este libro evolucionó a partir del material preparado para las clases de la materia «Programación Funcional», impartida para la Carrera de Licenciatura en Ciencias de la Computación de la Universidad Centroamericana «José Simeón Cañas».\n\nDespués de un año de trabajo, este libro incluye un recorrido por las características básicas del lenguaje Racket, en su versión 5.\n\nRacket 5 es la nueva versión de PLT Scheme , un sistema de programación de larga tradición en el aprendizaje de la programación de computadoras, a través del paradigma funcional, basándose en el lenguaje Scheme.\n\nRealmente no existe, formalmente hablando, un lenguaje llamado Scheme, sino que se le llama así a una familia de lenguajes de programación funcionales (véase el capítulo 1).\n\nEn este libro, se discute específicamente el dialecto conocido como Racket (anteriormente PLT Scheme), uno de los más difundidos. Si se quiere un estudio más purista sobre Scheme, revise el estándar R5RS que también es soportado por el intérprete de Racket.\n\nLos temas abordados en la Parte I incluyen una introducción a la programación funcional, una sencilla guía de instalación de Racket y una introducción a la interacción con Racket y DrRacket.\n\nEn la Parte II se introduce el lenguaje Racket en sí, a través de sus elementos básicos y los bloques lambda, característicos de la programación funcional.\n\nLa Parte III describe los demás elementos del lenguaje y contiene múltiples ejercicios para que el lector practique sus nuevos conocimientos.\n\nFinalmente, la Parte IV muestra las capacidades de Racket para implementar programas con interfaces gráficas de usuario.\n\nY por último, la Parte V incluye un anexo describiendo las diferencias entre la versión 5 de Racket y la serie 4.x de PLT Scheme.","downloadable_attachments":[{"id":64922134,"asset_id":44489383,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":129515116,"first_name":"Eduardo Adam","last_name":"Navas-Lopez","domain_name":"ues","page_name":"EduardoAdamNavasLopez","display_name":"Eduardo Adam Navas-Lopez","profile_url":"https://ues.academia.edu/EduardoAdamNavasLopez?f_ri=454","photo":"https://0.academia-photos.com/129515116/46290975/37033562/s65_eduardo_adam.navas-lopez.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":51264,"name":"Computer Programming","url":"https://www.academia.edu/Documents/in/Computer_Programming?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_11202753" data-work_id="11202753" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/11202753/The_difference_and_the_similarity_of_Functional_and_Logic_Programming_Languages">The difference and the similarity of Functional and Logic Programming Languages</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">The aim of this study is to compare the two non-imperative languages: Logic Programming and Functional Programming, This paper contains information about each language including an overview of these program languages, and the use of them,... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_11202753" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">The aim of this study is to compare the two non-imperative languages: Logic Programming and Functional Programming, This paper contains information about each language including an overview of these program languages, and the use of them, after that the “Results and the discussion” section will have the difference and the similarity between Logic Programming and Functional Programming. Various sources were used to research about each programming language; these sources were analyzed and reviewed to arrive at the comparison between Logic and Functional Programming</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/11202753" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="3439893b8b3b79cd726fa4989d8cb67e" rel="nofollow" data-download="{&quot;attachment_id&quot;:36827606,&quot;asset_id&quot;:11202753,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/36827606/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="11406037" href="https://emu.academia.edu/soufianebouiti">soufiane bouiti</a><script data-card-contents-for-user="11406037" type="text/json">{"id":11406037,"first_name":"soufiane","last_name":"bouiti","domain_name":"emu","page_name":"soufianebouiti","display_name":"soufiane bouiti","profile_url":"https://emu.academia.edu/soufianebouiti?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_11202753 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="11202753"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 11202753, container: ".js-paper-rank-work_11202753", }); });</script></li><li class="js-percentile-work_11202753 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 11202753; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_11202753"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_11202753 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="11202753"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 11202753; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=11202753]").text(description); $(".js-view-count-work_11202753").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_11202753").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="11202753"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">3</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="451" href="https://www.academia.edu/Documents/in/Programming_Languages">Programming Languages</a>,&nbsp;<script data-card-contents-for-ri="451" type="text/json">{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1638973" href="https://www.academia.edu/Documents/in/Logical_Programming">Logical Programming</a><script data-card-contents-for-ri="1638973" type="text/json">{"id":1638973,"name":"Logical Programming","url":"https://www.academia.edu/Documents/in/Logical_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=11202753]'), work: {"id":11202753,"title":"The difference and the similarity of Functional and Logic Programming Languages","created_at":"2015-03-02T07:14:44.562-08:00","url":"https://www.academia.edu/11202753/The_difference_and_the_similarity_of_Functional_and_Logic_Programming_Languages?f_ri=454","dom_id":"work_11202753","summary":"The aim of this study is to compare the two non-imperative languages: Logic Programming and Functional Programming, This paper contains information about each language including an overview of these program languages, and the use of them, after that the “Results and the discussion” section will have the difference and the similarity between Logic Programming and Functional Programming. Various sources were used to research about each programming language; these sources were analyzed and reviewed to arrive at the comparison between Logic and Functional Programming ","downloadable_attachments":[{"id":36827606,"asset_id":11202753,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":11406037,"first_name":"soufiane","last_name":"bouiti","domain_name":"emu","page_name":"soufianebouiti","display_name":"soufiane bouiti","profile_url":"https://emu.academia.edu/soufianebouiti?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":1638973,"name":"Logical Programming","url":"https://www.academia.edu/Documents/in/Logical_Programming?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_37089092" data-work_id="37089092" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/37089092/Stochastic_ranking_for_constrained_evolutionary_optimization">Stochastic ranking for constrained evolutionary optimization</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Penalty functions are often used in constrained optimization. However, it is very difficult to strike the right balance between objective and penalty functions. This paper introduces a novel approach to balance objective and penalty... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_37089092" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Penalty functions are often used in constrained optimization. However, it is very difficult to strike the right balance between objective and penalty functions. This paper introduces a novel approach to balance objective and penalty functions stochastically, i.e., stochastic ranking, and presents a new view on penalty function methods in terms of the dominance of penalty and objective functions. Some of the pitfalls of naive penalty methods are discussed in these terms. The new ranking method is tested using a ( ) evolution strategy on 13 benchmark problems. Our results show that suitable ranking alone (i.e., selection), without the introduction of complicated and specialized variation operators, is capable of improving the search performance significantly.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/37089092" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="d2f7718cc585478bddd99e7f03cb2608" rel="nofollow" data-download="{&quot;attachment_id&quot;:57040773,&quot;asset_id&quot;:37089092,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/57040773/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="35884010" href="https://independent.academia.edu/ThomasRunarsson">Thomas Runarsson</a><script data-card-contents-for-user="35884010" type="text/json">{"id":35884010,"first_name":"Thomas","last_name":"Runarsson","domain_name":"independent","page_name":"ThomasRunarsson","display_name":"Thomas Runarsson","profile_url":"https://independent.academia.edu/ThomasRunarsson?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_37089092 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="37089092"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 37089092, container: ".js-paper-rank-work_37089092", }); });</script></li><li class="js-percentile-work_37089092 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 37089092; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_37089092"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_37089092 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="37089092"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 37089092; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=37089092]").text(description); $(".js-view-count-work_37089092").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_37089092").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="37089092"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">14</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="37" href="https://www.academia.edu/Documents/in/Information_Systems">Information Systems</a>,&nbsp;<script data-card-contents-for-ri="37" type="text/json">{"id":37,"name":"Information Systems","url":"https://www.academia.edu/Documents/in/Information_Systems?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="60" href="https://www.academia.edu/Documents/in/Mechanical_Engineering">Mechanical Engineering</a>,&nbsp;<script data-card-contents-for-ri="60" type="text/json">{"id":60,"name":"Mechanical Engineering","url":"https://www.academia.edu/Documents/in/Mechanical_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a><script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=37089092]'), work: {"id":37089092,"title":"Stochastic ranking for constrained evolutionary optimization","created_at":"2018-07-20T15:56:11.519-07:00","url":"https://www.academia.edu/37089092/Stochastic_ranking_for_constrained_evolutionary_optimization?f_ri=454","dom_id":"work_37089092","summary":"Penalty functions are often used in constrained optimization. However, it is very difficult to strike the right balance between objective and penalty functions. This paper introduces a novel approach to balance objective and penalty functions stochastically, i.e., stochastic ranking, and presents a new view on penalty function methods in terms of the dominance of penalty and objective functions. Some of the pitfalls of naive penalty methods are discussed in these terms. The new ranking method is tested using a ( ) evolution strategy on 13 benchmark problems. Our results show that suitable ranking alone (i.e., selection), without the introduction of complicated and specialized variation operators, is capable of improving the search performance significantly.","downloadable_attachments":[{"id":57040773,"asset_id":37089092,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":35884010,"first_name":"Thomas","last_name":"Runarsson","domain_name":"independent","page_name":"ThomasRunarsson","display_name":"Thomas Runarsson","profile_url":"https://independent.academia.edu/ThomasRunarsson?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":37,"name":"Information Systems","url":"https://www.academia.edu/Documents/in/Information_Systems?f_ri=454","nofollow":false},{"id":60,"name":"Mechanical Engineering","url":"https://www.academia.edu/Documents/in/Mechanical_Engineering?f_ri=454","nofollow":false},{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":3523,"name":"Evolutionary Computation","url":"https://www.academia.edu/Documents/in/Evolutionary_Computation?f_ri=454"},{"id":6432,"name":"Stochastic Programming","url":"https://www.academia.edu/Documents/in/Stochastic_Programming?f_ri=454"},{"id":43131,"name":"Stochastic processes","url":"https://www.academia.edu/Documents/in/Stochastic_processes?f_ri=454"},{"id":351007,"name":"Constraint Handling","url":"https://www.academia.edu/Documents/in/Constraint_Handling?f_ri=454"},{"id":555139,"name":"Evolutionary optimization","url":"https://www.academia.edu/Documents/in/Evolutionary_optimization?f_ri=454"},{"id":563439,"name":"Evolution Strategy","url":"https://www.academia.edu/Documents/in/Evolution_Strategy?f_ri=454"},{"id":1237788,"name":"Electrical And Electronic Engineering","url":"https://www.academia.edu/Documents/in/Electrical_And_Electronic_Engineering?f_ri=454"},{"id":1394267,"name":"Penalty Function","url":"https://www.academia.edu/Documents/in/Penalty_Function?f_ri=454"},{"id":1689234,"name":"Constrained Optimization","url":"https://www.academia.edu/Documents/in/Constrained_Optimization?f_ri=454"},{"id":2725002,"name":"Benchmark Testing","url":"https://www.academia.edu/Documents/in/Benchmark_Testing?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_31151858" data-work_id="31151858" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/31151858/Master_Functions">Master Functions</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest">Roughly classified as social science. General list of master functions.</div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/31151858" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="54862609e3a0fbe2fb5a6e158a37d359" rel="nofollow" data-download="{&quot;attachment_id&quot;:51586673,&quot;asset_id&quot;:31151858,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/51586673/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="5746293" href="https://southernct.academia.edu/NathanCoppedge">Nathan Coppedge</a><script data-card-contents-for-user="5746293" type="text/json">{"id":5746293,"first_name":"Nathan","last_name":"Coppedge","domain_name":"southernct","page_name":"NathanCoppedge","display_name":"Nathan Coppedge","profile_url":"https://southernct.academia.edu/NathanCoppedge?f_ri=454","photo":"https://0.academia-photos.com/5746293/2482759/76140274/s65_nathan.coppedge.jpg"}</script></span></span></li><li class="js-paper-rank-work_31151858 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="31151858"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 31151858, container: ".js-paper-rank-work_31151858", }); });</script></li><li class="js-percentile-work_31151858 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 31151858; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_31151858"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_31151858 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="31151858"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 31151858; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=31151858]").text(description); $(".js-view-count-work_31151858").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_31151858").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="31151858"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">23</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="300" href="https://www.academia.edu/Documents/in/Mathematics">Mathematics</a>,&nbsp;<script data-card-contents-for-ri="300" type="text/json">{"id":300,"name":"Mathematics","url":"https://www.academia.edu/Documents/in/Mathematics?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="371" href="https://www.academia.edu/Documents/in/Functional_Analysis">Functional Analysis</a>,&nbsp;<script data-card-contents-for-ri="371" type="text/json">{"id":371,"name":"Functional Analysis","url":"https://www.academia.edu/Documents/in/Functional_Analysis?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1237" href="https://www.academia.edu/Documents/in/Social_Sciences">Social Sciences</a><script data-card-contents-for-ri="1237" type="text/json">{"id":1237,"name":"Social Sciences","url":"https://www.academia.edu/Documents/in/Social_Sciences?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=31151858]'), work: {"id":31151858,"title":"Master Functions","created_at":"2017-02-01T12:42:47.008-08:00","url":"https://www.academia.edu/31151858/Master_Functions?f_ri=454","dom_id":"work_31151858","summary":"Roughly classified as social science. General list of master functions.","downloadable_attachments":[{"id":51586673,"asset_id":31151858,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":5746293,"first_name":"Nathan","last_name":"Coppedge","domain_name":"southernct","page_name":"NathanCoppedge","display_name":"Nathan Coppedge","profile_url":"https://southernct.academia.edu/NathanCoppedge?f_ri=454","photo":"https://0.academia-photos.com/5746293/2482759/76140274/s65_nathan.coppedge.jpg"}],"research_interests":[{"id":300,"name":"Mathematics","url":"https://www.academia.edu/Documents/in/Mathematics?f_ri=454","nofollow":false},{"id":371,"name":"Functional Analysis","url":"https://www.academia.edu/Documents/in/Functional_Analysis?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":1237,"name":"Social Sciences","url":"https://www.academia.edu/Documents/in/Social_Sciences?f_ri=454","nofollow":false},{"id":2509,"name":"Philosophy Of Mathematics","url":"https://www.academia.edu/Documents/in/Philosophy_Of_Mathematics?f_ri=454"},{"id":7300,"name":"Systems Theory","url":"https://www.academia.edu/Documents/in/Systems_Theory?f_ri=454"},{"id":10499,"name":"Functionalism","url":"https://www.academia.edu/Documents/in/Functionalism?f_ri=454"},{"id":10611,"name":"Systemic Functional Linguistics","url":"https://www.academia.edu/Documents/in/Systemic_Functional_Linguistics?f_ri=454"},{"id":11680,"name":"Social Systems Theory","url":"https://www.academia.edu/Documents/in/Social_Systems_Theory?f_ri=454"},{"id":17824,"name":"Systematics","url":"https://www.academia.edu/Documents/in/Systematics?f_ri=454"},{"id":36476,"name":"Functional Data Analysis (Mathematics)","url":"https://www.academia.edu/Documents/in/Functional_Data_Analysis_Mathematics_?f_ri=454"},{"id":39056,"name":"Theoretical Mathematics","url":"https://www.academia.edu/Documents/in/Theoretical_Mathematics?f_ri=454"},{"id":51141,"name":"Functional data analysis","url":"https://www.academia.edu/Documents/in/Functional_data_analysis?f_ri=454"},{"id":102173,"name":"Functional Logic Programming","url":"https://www.academia.edu/Documents/in/Functional_Logic_Programming?f_ri=454"},{"id":112722,"name":"General Systems Theory","url":"https://www.academia.edu/Documents/in/General_Systems_Theory?f_ri=454"},{"id":123124,"name":"Generalized Functions","url":"https://www.academia.edu/Documents/in/Generalized_Functions?f_ri=454"},{"id":127738,"name":"Functional Analysis of Behavior","url":"https://www.academia.edu/Documents/in/Functional_Analysis_of_Behavior?f_ri=454"},{"id":141893,"name":"World-Systems Theory","url":"https://www.academia.edu/Documents/in/World-Systems_Theory?f_ri=454"},{"id":263448,"name":"Complexity theory in social systems","url":"https://www.academia.edu/Documents/in/Complexity_theory_in_social_systems?f_ri=454"},{"id":325323,"name":"Functions","url":"https://www.academia.edu/Documents/in/Functions?f_ri=454"},{"id":376749,"name":"Functional Analysis, Operator Theory, Complex Analysis","url":"https://www.academia.edu/Documents/in/Functional_Analysis_Operator_Theory_Complex_Analysis?f_ri=454"},{"id":709555,"name":"Functional Behavioral Analysis","url":"https://www.academia.edu/Documents/in/Functional_Behavioral_Analysis?f_ri=454"},{"id":1197942,"name":"Social Science","url":"https://www.academia.edu/Documents/in/Social_Science?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_75759545" data-work_id="75759545" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/75759545/Separation_anxiety_Stresses_of_developing_a_modern_day_separable_user_interface">Separation anxiety: Stresses of developing a modern day separable user interface</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">The evolution of User Interface (UI) tools has generally regarded the UI as separable from the underlying application it represents. This viewpoint leaves the UI having to restate invariants already specified in other subsystems of an... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_75759545" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">The evolution of User Interface (UI) tools has generally regarded the UI as separable from the underlying application it represents. This viewpoint leaves the UI having to restate invariants already specified in other subsystems of an application, and any discrepancy between the versions in the UI and those in the subsystems leads to errors. This paper explores a sample of real world subsystems in use by enterprise applications today, and underscores the problem of duplication between them and the UI. It then surveys the prevalence of this issue within mainstream software development.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/75759545" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="4c1b11ce6077514f0d09a2f7190ef3e9" rel="nofollow" data-download="{&quot;attachment_id&quot;:83494243,&quot;asset_id&quot;:75759545,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/83494243/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="14664976" href="https://uts.academia.edu/JohnLeaney">John Leaney</a><script data-card-contents-for-user="14664976" type="text/json">{"id":14664976,"first_name":"John","last_name":"Leaney","domain_name":"uts","page_name":"JohnLeaney","display_name":"John Leaney","profile_url":"https://uts.academia.edu/JohnLeaney?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_75759545 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="75759545"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 75759545, container: ".js-paper-rank-work_75759545", }); });</script></li><li class="js-percentile-work_75759545 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 75759545; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_75759545"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_75759545 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="75759545"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 75759545; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=75759545]").text(description); $(".js-view-count-work_75759545").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_75759545").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="75759545"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">10</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="8129" href="https://www.academia.edu/Documents/in/Software_Development">Software Development</a><script data-card-contents-for-ri="8129" type="text/json">{"id":8129,"name":"Software Development","url":"https://www.academia.edu/Documents/in/Software_Development?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=75759545]'), work: {"id":75759545,"title":"Separation anxiety: Stresses of developing a modern day separable user interface","created_at":"2022-04-07T15:23:27.808-07:00","url":"https://www.academia.edu/75759545/Separation_anxiety_Stresses_of_developing_a_modern_day_separable_user_interface?f_ri=454","dom_id":"work_75759545","summary":"The evolution of User Interface (UI) tools has generally regarded the UI as separable from the underlying application it represents. This viewpoint leaves the UI having to restate invariants already specified in other subsystems of an application, and any discrepancy between the versions in the UI and those in the subsystems leads to errors. This paper explores a sample of real world subsystems in use by enterprise applications today, and underscores the problem of duplication between them and the UI. It then surveys the prevalence of this issue within mainstream software development.","downloadable_attachments":[{"id":83494243,"asset_id":75759545,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":14664976,"first_name":"John","last_name":"Leaney","domain_name":"uts","page_name":"JohnLeaney","display_name":"John Leaney","profile_url":"https://uts.academia.edu/JohnLeaney?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":8129,"name":"Software Development","url":"https://www.academia.edu/Documents/in/Software_Development?f_ri=454","nofollow":false},{"id":9729,"name":"Stress","url":"https://www.academia.edu/Documents/in/Stress?f_ri=454"},{"id":11119,"name":"User Interface","url":"https://www.academia.edu/Documents/in/User_Interface?f_ri=454"},{"id":36077,"name":"Energy Management","url":"https://www.academia.edu/Documents/in/Energy_Management?f_ri=454"},{"id":97585,"name":"User interfaces","url":"https://www.academia.edu/Documents/in/User_interfaces?f_ri=454"},{"id":923603,"name":"Duplication","url":"https://www.academia.edu/Documents/in/Duplication?f_ri=454"},{"id":1931321,"name":"Application Software","url":"https://www.academia.edu/Documents/in/Application_Software?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_7237533" data-work_id="7237533" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/7237533/Functional_and_Constraint_Logic_Programming">Functional and Constraint Logic Programming</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Starting at a seminal paper published by J. Jaffar and J.L. Lassez in 1987 [JL87], Constraint Logic Programming (CLP) has developed as a powerful programming paradigm which supports a clean combination of logic (in the form of Horn... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_7237533" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Starting at a seminal paper published by J. Jaffar and J.L. Lassez in 1987 [JL87], Constraint Logic Programming (CLP) has developed as a powerful programming paradigm which supports a clean combination of logic (in the form of Horn clauses) and domain-specific methods for constraint satisfaction, simplification and optimization. The well established mathematical foundations of logic programming [Llo87, Apt90] have been succesfully extended to CLP [JMMS96]. Simultaneously, practical applications of CLP have arisen in many fields. Good introductions to the theory, implementation issues and programming applications of CLP languages can be found in [JM94, MS98]. On the other hand, the combination of logic programming with other declarative programming paradigms (especially functional programming) has been widely investigated during the last decade, leading to useful insights for the design of more expressive declarative languages. The first attempt to combine functional and logic languages was done by J.A. Robinson and E.E. Sibert when proposing the language LOGLISP [RS82]. Some other early proposals for the design of functional + logic languages are described in [De86]. A more recent survey of the operational principles and implementation techniques used for the integration of functions into logic programming can be found in [Han94b].</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/7237533" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="a7d28defb4ed0cecb83a5e19f2c7ef9b" rel="nofollow" data-download="{&quot;attachment_id&quot;:48552856,&quot;asset_id&quot;:7237533,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/48552856/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="12595924" href="https://hcmus.academia.edu/LazyBkk">Lazy Bkk</a><script data-card-contents-for-user="12595924" type="text/json">{"id":12595924,"first_name":"Lazy","last_name":"Bkk","domain_name":"hcmus","page_name":"LazyBkk","display_name":"Lazy Bkk","profile_url":"https://hcmus.academia.edu/LazyBkk?f_ri=454","photo":"https://0.academia-photos.com/12595924/5425887/6189045/s65_lazy.bkk.jpg_oh_c87b21c812a75a5b9726eb209f200823_oe_54b7891a"}</script></span></span></li><li class="js-paper-rank-work_7237533 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="7237533"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 7237533, container: ".js-paper-rank-work_7237533", }); });</script></li><li class="js-percentile-work_7237533 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 7237533; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_7237533"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_7237533 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="7237533"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 7237533; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=7237533]").text(description); $(".js-view-count-work_7237533").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_7237533").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="7237533"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">5</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="149786" href="https://www.academia.edu/Documents/in/Declarative_Programming">Declarative Programming</a>,&nbsp;<script data-card-contents-for-ri="149786" type="text/json">{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="386576" href="https://www.academia.edu/Documents/in/Domain_Specificity">Domain Specificity</a>,&nbsp;<script data-card-contents-for-ri="386576" type="text/json">{"id":386576,"name":"Domain Specificity","url":"https://www.academia.edu/Documents/in/Domain_Specificity?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="757194" href="https://www.academia.edu/Documents/in/Programming_Paradigm">Programming Paradigm</a><script data-card-contents-for-ri="757194" type="text/json">{"id":757194,"name":"Programming Paradigm","url":"https://www.academia.edu/Documents/in/Programming_Paradigm?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=7237533]'), work: {"id":7237533,"title":"Functional and Constraint Logic Programming","created_at":"2014-06-02T18:52:50.241-07:00","url":"https://www.academia.edu/7237533/Functional_and_Constraint_Logic_Programming?f_ri=454","dom_id":"work_7237533","summary":"Starting at a seminal paper published by J. Jaffar and J.L. Lassez in 1987 [JL87], Constraint Logic Programming (CLP) has developed as a powerful programming paradigm which supports a clean combination of logic (in the form of Horn clauses) and domain-specific methods for constraint satisfaction, simplification and optimization. The well established mathematical foundations of logic programming [Llo87, Apt90] have been succesfully extended to CLP [JMMS96]. Simultaneously, practical applications of CLP have arisen in many fields. Good introductions to the theory, implementation issues and programming applications of CLP languages can be found in [JM94, MS98]. On the other hand, the combination of logic programming with other declarative programming paradigms (especially functional programming) has been widely investigated during the last decade, leading to useful insights for the design of more expressive declarative languages. The first attempt to combine functional and logic languages was done by J.A. Robinson and E.E. Sibert when proposing the language LOGLISP [RS82]. Some other early proposals for the design of functional + logic languages are described in [De86]. A more recent survey of the operational principles and implementation techniques used for the integration of functions into logic programming can be found in [Han94b].","downloadable_attachments":[{"id":48552856,"asset_id":7237533,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":12595924,"first_name":"Lazy","last_name":"Bkk","domain_name":"hcmus","page_name":"LazyBkk","display_name":"Lazy Bkk","profile_url":"https://hcmus.academia.edu/LazyBkk?f_ri=454","photo":"https://0.academia-photos.com/12595924/5425887/6189045/s65_lazy.bkk.jpg_oh_c87b21c812a75a5b9726eb209f200823_oe_54b7891a"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false},{"id":386576,"name":"Domain Specificity","url":"https://www.academia.edu/Documents/in/Domain_Specificity?f_ri=454","nofollow":false},{"id":757194,"name":"Programming Paradigm","url":"https://www.academia.edu/Documents/in/Programming_Paradigm?f_ri=454","nofollow":false},{"id":819765,"name":"Constraint Satisfaction","url":"https://www.academia.edu/Documents/in/Constraint_Satisfaction?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_15261911" data-work_id="15261911" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/15261911/The_optimal_implementation_of_functional_programming_languages_Cambridge_tracts_in_theoretical_computer_science_45_">The optimal implementation of functional programming languages (Cambridge tracts in theoretical computer science 45)</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">This book, the first in the subject, is a comprehensive account of optimal reduction by two of its leading exponents. Practical implementation aspects are fully covered as are its mathematical underpinnings. The relationship to the... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_15261911" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">This book, the first in the subject, is a comprehensive account of optimal reduction by two of its leading exponents. Practical implementation aspects are fully covered as are its mathematical underpinnings. The relationship to the pioneering work of Lévy and to Girard&amp;#x27;s more ...</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/15261911" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="3312881204874601fcc2c143319a20dc" rel="nofollow" data-download="{&quot;attachment_id&quot;:43387228,&quot;asset_id&quot;:15261911,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/43387228/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="34336894" href="https://unibo.academia.edu/AndreaAsperti">Andrea Asperti</a><script data-card-contents-for-user="34336894" type="text/json">{"id":34336894,"first_name":"Andrea","last_name":"Asperti","domain_name":"unibo","page_name":"AndreaAsperti","display_name":"Andrea Asperti","profile_url":"https://unibo.academia.edu/AndreaAsperti?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_15261911 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="15261911"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 15261911, container: ".js-paper-rank-work_15261911", }); });</script></li><li class="js-percentile-work_15261911 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 15261911; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_15261911"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_15261911 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="15261911"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 15261911; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=15261911]").text(description); $(".js-view-count-work_15261911").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_15261911").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="15261911"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i></div><span class="InlineList-item-text u-textTruncate u-pl6x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a><script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (false) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=15261911]'), work: {"id":15261911,"title":"The optimal implementation of functional programming languages (Cambridge tracts in theoretical computer science 45)","created_at":"2015-08-28T23:41:38.351-07:00","url":"https://www.academia.edu/15261911/The_optimal_implementation_of_functional_programming_languages_Cambridge_tracts_in_theoretical_computer_science_45_?f_ri=454","dom_id":"work_15261911","summary":"This book, the first in the subject, is a comprehensive account of optimal reduction by two of its leading exponents. Practical implementation aspects are fully covered as are its mathematical underpinnings. The relationship to the pioneering work of Lévy and to Girard\u0026#x27;s more ...","downloadable_attachments":[{"id":43387228,"asset_id":15261911,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":34336894,"first_name":"Andrea","last_name":"Asperti","domain_name":"unibo","page_name":"AndreaAsperti","display_name":"Andrea Asperti","profile_url":"https://unibo.academia.edu/AndreaAsperti?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_2636448" data-work_id="2636448" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/2636448/Comparing_Selected_Criteria_of_Programming_Languages_Java_PHP_C_Perl_Haskell_AspectJ_Ruby_COBOL_Bash_Scripts_and_Scheme_Revision_1_0_a_Team_CPLgroup_COMP6411_S10_Term_Report">Comparing Selected Criteria of Programming Languages Java, PHP, C++, Perl, Haskell, AspectJ, Ruby, COBOL, Bash Scripts and Scheme Revision 1.0 - a Team CPLgroup COMP6411-S10 Term Report</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Comparison of programming languages is a common topic of discussion among software engineers. Few languages ever become sufficiently popular that they are used by more than a few people or find their niche in research or education; but... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_2636448" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Comparison of programming languages is a common topic of discussion among software engineers. Few languages ever become sufficiently popular that they are used by more than a few people or find their niche in research or education; but professional programmers can easily use dozens of different languages during their career. Multiple programming languages are designed, specified, and implemented every year in order to keep up with the changing programming paradigms, hardware evolution, etc. In this paper we present a comparative study between ten programming languages: Haskell, Java, Perl, C++, AspectJ, COBOL, Ruby, PHP, Bash Scripts, and Scheme; with respect of the following criteria: Secure programming practices, web applications development, web services design and composition, object oriented-based abstraction, reflection, aspect-orientation, functional programming, declarative programming, batch scripting, and user interface prototype design.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/2636448" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="f753c74d5ad0dc78541bc989f85dff63" rel="nofollow" data-download="{&quot;attachment_id&quot;:32417197,&quot;asset_id&quot;:2636448,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/32417197/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="2800029" href="https://independent.academia.edu/AbenezerYohannes">Abenezer Yohannes</a><script data-card-contents-for-user="2800029" type="text/json">{"id":2800029,"first_name":"Abenezer","last_name":"Yohannes","domain_name":"independent","page_name":"AbenezerYohannes","display_name":"Abenezer Yohannes","profile_url":"https://independent.academia.edu/AbenezerYohannes?f_ri=454","photo":"https://0.academia-photos.com/2800029/1126848/1412439/s65_abenezer.yohannes.jpg"}</script></span></span></li><li class="js-paper-rank-work_2636448 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="2636448"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 2636448, container: ".js-paper-rank-work_2636448", }); });</script></li><li class="js-percentile-work_2636448 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 2636448; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_2636448"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_2636448 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="2636448"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 2636448; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=2636448]").text(description); $(".js-view-count-work_2636448").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_2636448").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="2636448"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">12</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="11119" href="https://www.academia.edu/Documents/in/User_Interface">User Interface</a>,&nbsp;<script data-card-contents-for-ri="11119" type="text/json">{"id":11119,"name":"User Interface","url":"https://www.academia.edu/Documents/in/User_Interface?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="23890" href="https://www.academia.edu/Documents/in/Comparative_Study">Comparative Study</a><script data-card-contents-for-ri="23890" type="text/json">{"id":23890,"name":"Comparative Study","url":"https://www.academia.edu/Documents/in/Comparative_Study?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=2636448]'), work: {"id":2636448,"title":"Comparing Selected Criteria of Programming Languages Java, PHP, C++, Perl, Haskell, AspectJ, Ruby, COBOL, Bash Scripts and Scheme Revision 1.0 - a Team CPLgroup COMP6411-S10 Term Report","created_at":"2013-02-23T14:54:28.891-08:00","url":"https://www.academia.edu/2636448/Comparing_Selected_Criteria_of_Programming_Languages_Java_PHP_C_Perl_Haskell_AspectJ_Ruby_COBOL_Bash_Scripts_and_Scheme_Revision_1_0_a_Team_CPLgroup_COMP6411_S10_Term_Report?f_ri=454","dom_id":"work_2636448","summary":"Comparison of programming languages is a common topic of discussion among software engineers. Few languages ever become sufficiently popular that they are used by more than a few people or find their niche in research or education; but professional programmers can easily use dozens of different languages during their career. Multiple programming languages are designed, specified, and implemented every year in order to keep up with the changing programming paradigms, hardware evolution, etc. In this paper we present a comparative study between ten programming languages: Haskell, Java, Perl, C++, AspectJ, COBOL, Ruby, PHP, Bash Scripts, and Scheme; with respect of the following criteria: Secure programming practices, web applications development, web services design and composition, object oriented-based abstraction, reflection, aspect-orientation, functional programming, declarative programming, batch scripting, and user interface prototype design.","downloadable_attachments":[{"id":32417197,"asset_id":2636448,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":2800029,"first_name":"Abenezer","last_name":"Yohannes","domain_name":"independent","page_name":"AbenezerYohannes","display_name":"Abenezer Yohannes","profile_url":"https://independent.academia.edu/AbenezerYohannes?f_ri=454","photo":"https://0.academia-photos.com/2800029/1126848/1412439/s65_abenezer.yohannes.jpg"}],"research_interests":[{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":11119,"name":"User Interface","url":"https://www.academia.edu/Documents/in/User_Interface?f_ri=454","nofollow":false},{"id":23890,"name":"Comparative Study","url":"https://www.academia.edu/Documents/in/Comparative_Study?f_ri=454","nofollow":false},{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454"},{"id":170610,"name":"Selection Criteria","url":"https://www.academia.edu/Documents/in/Selection_Criteria?f_ri=454"},{"id":317992,"name":"Web Service","url":"https://www.academia.edu/Documents/in/Web_Service?f_ri=454"},{"id":757194,"name":"Programming Paradigm","url":"https://www.academia.edu/Documents/in/Programming_Paradigm?f_ri=454"},{"id":887157,"name":"Cobol","url":"https://www.academia.edu/Documents/in/Cobol?f_ri=454"},{"id":1121048,"name":"Object Oriented","url":"https://www.academia.edu/Documents/in/Object_Oriented?f_ri=454"},{"id":1139482,"name":"Web Application Development","url":"https://www.academia.edu/Documents/in/Web_Application_Development?f_ri=454"},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_63030573" data-work_id="63030573" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/63030573/Internal_and_External_DSLs_Applications_in_Industry">Internal and External DSLs Applications in Industry</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">in this article we deal with DSL (domain specific language) ,internal or external DSL. We present terminology and expression about DSL and after that we present differences between Internal and External DSL and make example with them show... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_63030573" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">in this article we deal with DSL (domain specific language) ,internal or external DSL. We present terminology and expression about DSL and after that we present differences between Internal and External DSL and make example with them show you why software engineers choose this method for development the project and show you instance projects that made by the Model Driven software development and show you some reason why industrial companies use this method how industrialized countries use this method for development of projects why collaborative development is important in these days.we describe methods of collaborative development.for example DSL for communicate between domain experts and development team .unified modeling language.Sysml for system engineering.commercial toolkits for model driven engineering and Architecture description languages(ADLs).</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/63030573" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="1ae5ea8c04a194d5baed18c761d63d9c" rel="nofollow" data-download="{&quot;attachment_id&quot;:77927248,&quot;asset_id&quot;:63030573,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/77927248/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="150295697" href="https://independent.academia.edu/NavidDerakhshandeh">Navid Derakhshandeh</a><script data-card-contents-for-user="150295697" type="text/json">{"id":150295697,"first_name":"Navid","last_name":"Derakhshandeh","domain_name":"independent","page_name":"NavidDerakhshandeh","display_name":"Navid Derakhshandeh","profile_url":"https://independent.academia.edu/NavidDerakhshandeh?f_ri=454","photo":"https://0.academia-photos.com/150295697/140658727/130146015/s65_navid.derakhshandeh.jpg"}</script></span></span></li><li class="js-paper-rank-work_63030573 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="63030573"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 63030573, container: ".js-paper-rank-work_63030573", }); });</script></li><li class="js-percentile-work_63030573 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 63030573; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_63030573"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_63030573 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="63030573"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 63030573; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=63030573]").text(description); $(".js-view-count-work_63030573").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_63030573").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="63030573"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">17</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="457" href="https://www.academia.edu/Documents/in/Compilers">Compilers</a>,&nbsp;<script data-card-contents-for-ri="457" type="text/json">{"id":457,"name":"Compilers","url":"https://www.academia.edu/Documents/in/Compilers?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1383" href="https://www.academia.edu/Documents/in/Model-Driven_Development">Model-Driven Development</a>,&nbsp;<script data-card-contents-for-ri="1383" type="text/json">{"id":1383,"name":"Model-Driven Development","url":"https://www.academia.edu/Documents/in/Model-Driven_Development?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="3391" href="https://www.academia.edu/Documents/in/Systems_Engineering">Systems Engineering</a><script data-card-contents-for-ri="3391" type="text/json">{"id":3391,"name":"Systems Engineering","url":"https://www.academia.edu/Documents/in/Systems_Engineering?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=63030573]'), work: {"id":63030573,"title":"Internal and External DSLs Applications in Industry","created_at":"2021-12-02T15:47:58.511-08:00","url":"https://www.academia.edu/63030573/Internal_and_External_DSLs_Applications_in_Industry?f_ri=454","dom_id":"work_63030573","summary":"in this article we deal with DSL (domain specific language) ,internal or external DSL. We present terminology and expression about DSL and after that we present differences between Internal and External DSL and make example with them show you why software engineers choose this method for development the project and show you instance projects that made by the Model Driven software development and show you some reason why industrial companies use this method how industrialized countries use this method for development of projects why collaborative development is important in these days.we describe methods of collaborative development.for example DSL for communicate between domain experts and development team .unified modeling language.Sysml for system engineering.commercial toolkits for model driven engineering and Architecture description languages(ADLs).","downloadable_attachments":[{"id":77927248,"asset_id":63030573,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":150295697,"first_name":"Navid","last_name":"Derakhshandeh","domain_name":"independent","page_name":"NavidDerakhshandeh","display_name":"Navid Derakhshandeh","profile_url":"https://independent.academia.edu/NavidDerakhshandeh?f_ri=454","photo":"https://0.academia-photos.com/150295697/140658727/130146015/s65_navid.derakhshandeh.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":457,"name":"Compilers","url":"https://www.academia.edu/Documents/in/Compilers?f_ri=454","nofollow":false},{"id":1383,"name":"Model-Driven Development","url":"https://www.academia.edu/Documents/in/Model-Driven_Development?f_ri=454","nofollow":false},{"id":3391,"name":"Systems Engineering","url":"https://www.academia.edu/Documents/in/Systems_Engineering?f_ri=454","nofollow":false},{"id":5473,"name":"Embedded Systems","url":"https://www.academia.edu/Documents/in/Embedded_Systems?f_ri=454"},{"id":5474,"name":"Real-time Systems","url":"https://www.academia.edu/Documents/in/Real-time_Systems?f_ri=454"},{"id":11820,"name":"Modeling and Simulation","url":"https://www.academia.edu/Documents/in/Modeling_and_Simulation?f_ri=454"},{"id":18873,"name":"Automotive Industry","url":"https://www.academia.edu/Documents/in/Automotive_Industry?f_ri=454"},{"id":43237,"name":"Domain Specific Languages","url":"https://www.academia.edu/Documents/in/Domain_Specific_Languages?f_ri=454"},{"id":49146,"name":"Kalman Filter","url":"https://www.academia.edu/Documents/in/Kalman_Filter?f_ri=454"},{"id":113971,"name":"Model Based Systems Engineering","url":"https://www.academia.edu/Documents/in/Model_Based_Systems_Engineering?f_ri=454"},{"id":264837,"name":"Terrain aided Navigation","url":"https://www.academia.edu/Documents/in/Terrain_aided_Navigation?f_ri=454"},{"id":289661,"name":"AUTOSAR","url":"https://www.academia.edu/Documents/in/AUTOSAR?f_ri=454"},{"id":312828,"name":"Automotive Design \u0026 Development","url":"https://www.academia.edu/Documents/in/Automotive_Design_and_Development?f_ri=454"},{"id":320624,"name":"Parser","url":"https://www.academia.edu/Documents/in/Parser?f_ri=454"},{"id":366944,"name":"BNF","url":"https://www.academia.edu/Documents/in/BNF?f_ri=454"},{"id":2689140,"name":"MBSE Model Based Systems Engineering","url":"https://www.academia.edu/Documents/in/MBSE_Model_Based_Systems_Engineering?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_28091966" data-work_id="28091966" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/28091966/On_Lexicographic_Termination_Ordering_with_Space_Bound_Certifications">On Lexicographic Termination Ordering with Space Bound Certifications</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Public reporting buiden lot this collection ol information is estimated 1o average 1 hour per response, including 1ha time tor reviewirnj instructions, searching das sources, gslheringsrd maintaining 1 he date needed, and conpratirg and... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_28091966" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Public reporting buiden lot this collection ol information is estimated 1o average 1 hour per response, including 1ha time tor reviewirnj instructions, searching das sources, gslheringsrd maintaining 1 he date needed, and conpratirg and reviewing the collection ol intornrslbn. Send comments rega rding this burden estinrale or any ol her aspect ol this collect bn or] htormalbn. including sugpjaslbns lor reducing this burden to Washington Headquarters Servbe, Directorate 1ar Information CperatbrEBrri Reports. 1Z1 a Jellerson Davis Hrghwsy, Suhe 120*. Arlington, VA Z22DZ4XE, and 10 the OHk» ol Management end Budget, PaperworkRediclbn Project (rood-otaS) Washington, DC 20003.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/28091966" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="dcbf55c6ef7fa184e3247ffe08d51517" rel="nofollow" data-download="{&quot;attachment_id&quot;:48407480,&quot;asset_id&quot;:28091966,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/48407480/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="52506196" href="https://ku-dk.academia.edu/JeanYvesMoyen">Jean-Yves Moyen</a><script data-card-contents-for-user="52506196" type="text/json">{"id":52506196,"first_name":"Jean-Yves","last_name":"Moyen","domain_name":"ku-dk","page_name":"JeanYvesMoyen","display_name":"Jean-Yves Moyen","profile_url":"https://ku-dk.academia.edu/JeanYvesMoyen?f_ri=454","photo":"https://0.academia-photos.com/52506196/13949220/15001308/s65_jean-yves.moyen.jpg"}</script></span></span></li><li class="js-paper-rank-work_28091966 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="28091966"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 28091966, container: ".js-paper-rank-work_28091966", }); });</script></li><li class="js-percentile-work_28091966 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 28091966; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_28091966"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_28091966 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="28091966"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 28091966; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=28091966]").text(description); $(".js-view-count-work_28091966").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_28091966").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="28091966"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">6</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="13891" href="https://www.academia.edu/Documents/in/Program_Analysis">Program Analysis</a>,&nbsp;<script data-card-contents-for-ri="13891" type="text/json">{"id":13891,"name":"Program Analysis","url":"https://www.academia.edu/Documents/in/Program_Analysis?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="181847" href="https://www.academia.edu/Documents/in/First-Order_Logic">First-Order Logic</a>,&nbsp;<script data-card-contents-for-ri="181847" type="text/json">{"id":181847,"name":"First-Order Logic","url":"https://www.academia.edu/Documents/in/First-Order_Logic?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="353644" href="https://www.academia.edu/Documents/in/Certification">Certification</a><script data-card-contents-for-ri="353644" type="text/json">{"id":353644,"name":"Certification","url":"https://www.academia.edu/Documents/in/Certification?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=28091966]'), work: {"id":28091966,"title":"On Lexicographic Termination Ordering with Space Bound Certifications","created_at":"2016-08-29T06:09:49.686-07:00","url":"https://www.academia.edu/28091966/On_Lexicographic_Termination_Ordering_with_Space_Bound_Certifications?f_ri=454","dom_id":"work_28091966","summary":"Public reporting buiden lot this collection ol information is estimated 1o average 1 hour per response, including 1ha time tor reviewirnj instructions, searching das sources, gslheringsrd maintaining 1 he date needed, and conpratirg and reviewing the collection ol intornrslbn. Send comments rega rding this burden estinrale or any ol her aspect ol this collect bn or] htormalbn. including sugpjaslbns lor reducing this burden to Washington Headquarters Servbe, Directorate 1ar Information CperatbrEBrri Reports. 1Z1 a Jellerson Davis Hrghwsy, Suhe 120*. Arlington, VA Z22DZ4XE, and 10 the OHk» ol Management end Budget, PaperworkRediclbn Project (rood-otaS) Washington, DC 20003.","downloadable_attachments":[{"id":48407480,"asset_id":28091966,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":52506196,"first_name":"Jean-Yves","last_name":"Moyen","domain_name":"ku-dk","page_name":"JeanYvesMoyen","display_name":"Jean-Yves Moyen","profile_url":"https://ku-dk.academia.edu/JeanYvesMoyen?f_ri=454","photo":"https://0.academia-photos.com/52506196/13949220/15001308/s65_jean-yves.moyen.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":13891,"name":"Program Analysis","url":"https://www.academia.edu/Documents/in/Program_Analysis?f_ri=454","nofollow":false},{"id":181847,"name":"First-Order Logic","url":"https://www.academia.edu/Documents/in/First-Order_Logic?f_ri=454","nofollow":false},{"id":353644,"name":"Certification","url":"https://www.academia.edu/Documents/in/Certification?f_ri=454","nofollow":false},{"id":506192,"name":"Ordering","url":"https://www.academia.edu/Documents/in/Ordering?f_ri=454"},{"id":2094327,"name":"Free Algebra","url":"https://www.academia.edu/Documents/in/Free_Algebra?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_14953487" data-work_id="14953487" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/14953487/Functional_and_Constraint_Logic_Programming">Functional and Constraint Logic Programming</a></div></div><div class="u-pb4x u-mt3x"></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/14953487" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="c207c62e740a1796cc516206cb734eb6" rel="nofollow" data-download="{&quot;attachment_id&quot;:43705685,&quot;asset_id&quot;:14953487,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/43705685/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="33947553" href="https://upv-es.academia.edu/SantiagoEscobar">Santiago Escobar</a><script data-card-contents-for-user="33947553" type="text/json">{"id":33947553,"first_name":"Santiago","last_name":"Escobar","domain_name":"upv-es","page_name":"SantiagoEscobar","display_name":"Santiago Escobar","profile_url":"https://upv-es.academia.edu/SantiagoEscobar?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_14953487 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="14953487"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 14953487, container: ".js-paper-rank-work_14953487", }); });</script></li><li class="js-percentile-work_14953487 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 14953487; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_14953487"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_14953487 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="14953487"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 14953487; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=14953487]").text(description); $(".js-view-count-work_14953487").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_14953487").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="14953487"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">5</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="149786" href="https://www.academia.edu/Documents/in/Declarative_Programming">Declarative Programming</a>,&nbsp;<script data-card-contents-for-ri="149786" type="text/json">{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="386576" href="https://www.academia.edu/Documents/in/Domain_Specificity">Domain Specificity</a>,&nbsp;<script data-card-contents-for-ri="386576" type="text/json">{"id":386576,"name":"Domain Specificity","url":"https://www.academia.edu/Documents/in/Domain_Specificity?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="757194" href="https://www.academia.edu/Documents/in/Programming_Paradigm">Programming Paradigm</a><script data-card-contents-for-ri="757194" type="text/json">{"id":757194,"name":"Programming Paradigm","url":"https://www.academia.edu/Documents/in/Programming_Paradigm?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=14953487]'), work: {"id":14953487,"title":"Functional and Constraint Logic Programming","created_at":"2015-08-16T03:50:01.789-07:00","url":"https://www.academia.edu/14953487/Functional_and_Constraint_Logic_Programming?f_ri=454","dom_id":"work_14953487","summary":null,"downloadable_attachments":[{"id":43705685,"asset_id":14953487,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":33947553,"first_name":"Santiago","last_name":"Escobar","domain_name":"upv-es","page_name":"SantiagoEscobar","display_name":"Santiago Escobar","profile_url":"https://upv-es.academia.edu/SantiagoEscobar?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false},{"id":386576,"name":"Domain Specificity","url":"https://www.academia.edu/Documents/in/Domain_Specificity?f_ri=454","nofollow":false},{"id":757194,"name":"Programming Paradigm","url":"https://www.academia.edu/Documents/in/Programming_Paradigm?f_ri=454","nofollow":false},{"id":819765,"name":"Constraint Satisfaction","url":"https://www.academia.edu/Documents/in/Constraint_Satisfaction?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_470608" data-work_id="470608" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/470608/Teaching_Object_Oriented_Systems_Development_to_Structurally_Exposed_Students">Teaching Object-Oriented Systems Development to Structurally Exposed Students</a></div></div><div class="u-pb4x u-mt3x"></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/470608" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="b6735a6d9fa020802f8e855ec9628c90" rel="nofollow" data-download="{&quot;attachment_id&quot;:51396654,&quot;asset_id&quot;:470608,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/51396654/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="359160" href="https://csir-za.academia.edu/AuronaGerber">Aurona Gerber</a><script data-card-contents-for-user="359160" type="text/json">{"id":359160,"first_name":"Aurona","last_name":"Gerber","domain_name":"csir-za","page_name":"AuronaGerber","display_name":"Aurona Gerber","profile_url":"https://csir-za.academia.edu/AuronaGerber?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_470608 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="470608"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 470608, container: ".js-paper-rank-work_470608", }); });</script></li><li class="js-percentile-work_470608 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 470608; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_470608"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_470608 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="470608"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 470608; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=470608]").text(description); $(".js-view-count-work_470608").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_470608").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="470608"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="453" href="https://www.academia.edu/Documents/in/Object_Oriented_Programming">Object Oriented Programming</a>,&nbsp;<script data-card-contents-for-ri="453" type="text/json">{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1128" href="https://www.academia.edu/Documents/in/Computer_Science_Education">Computer Science Education</a><script data-card-contents-for-ri="1128" type="text/json">{"id":1128,"name":"Computer Science Education","url":"https://www.academia.edu/Documents/in/Computer_Science_Education?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=470608]'), work: {"id":470608,"title":"Teaching Object-Oriented Systems Development to Structurally Exposed Students","created_at":"2011-03-10T16:33:52.514-08:00","url":"https://www.academia.edu/470608/Teaching_Object_Oriented_Systems_Development_to_Structurally_Exposed_Students?f_ri=454","dom_id":"work_470608","summary":null,"downloadable_attachments":[{"id":51396654,"asset_id":470608,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":359160,"first_name":"Aurona","last_name":"Gerber","domain_name":"csir-za","page_name":"AuronaGerber","display_name":"Aurona Gerber","profile_url":"https://csir-za.academia.edu/AuronaGerber?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":453,"name":"Object Oriented Programming","url":"https://www.academia.edu/Documents/in/Object_Oriented_Programming?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":1128,"name":"Computer Science Education","url":"https://www.academia.edu/Documents/in/Computer_Science_Education?f_ri=454","nofollow":false},{"id":37753,"name":"Teaching","url":"https://www.academia.edu/Documents/in/Teaching?f_ri=454"},{"id":198066,"name":"Contamination","url":"https://www.academia.edu/Documents/in/Contamination?f_ri=454"},{"id":1259267,"name":"Switches","url":"https://www.academia.edu/Documents/in/Switches?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_44977858" data-work_id="44977858" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/44977858/Solving_SICP_An_Experience_Report_on_Solving_the_World_s_Most_Famous_Programming_Problem_Set">Solving SICP: An Experience Report on Solving the World’s Most Famous Programming Problem Set</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">This report is written as a post-mortem of a project that has, perhaps, been the author’s most extensive personal project: creating a complete and comprehensive solution to one of the most famous programming problem sets in the modern... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_44977858" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">This report is written as a post-mortem of a project that has, perhaps, been the author’s most extensive personal project: creating a complete and comprehensive solution to one of the most famous programming problem sets in the modern computer science curriculum Structure and Interpretation of Computer Programs by Abelson, G. J. Sussman, and J. Sussman. It measures exactly: • How much effort SICP requires (729 hours 19 minutes (over eight months), 292 sessions). • How many computer languages it involves (6). • How many pieces of software are required (9). • How much communication with peers is needed. It suggests: • A practical software-supported task management procedure for solving coursework. • Several improvements, on the technical side, to any hard skills teaching process. • Several improvements, on the social side, to any kind of teaching process. The solution is published online (the source code and pdf file): • <a href="http://gitlab.com/Lockywolf/chibi-sicp" rel="nofollow">http://gitlab.com/Lockywolf/chibi-sicp</a> (Nikishkin 2020) This report (and the data in the appendix) can be applied immediately as: • A single-point estimate of the SICP problem set difficulty. • A class handout aimed at increasing students’ mo- tivation to study. • A data source for a study of learning patterns among adult professionals aiming for continuing education. • An “almost ready” protocol for a convenient problem- set solution procedure, which produces artefacts that can be later used as a student portfolio. • An “almost ready”, and “almost convenient” pro- tocol for measuring time consumption of almost any problem set expressible in a digital form. Additionally, a time-tracking data analysis can be re- produced interactively in the org-mode version of this report. (See: Appendix: Emacs Lisp code for data ana- lysis)</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/44977858" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="14fce1b54b55292dafc049cf03bdd95f" rel="nofollow" data-download="{&quot;attachment_id&quot;:65515478,&quot;asset_id&quot;:44977858,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/65515478/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="26501427" href="https://edinburgh.academia.edu/VladimirNikishkin">Vladimir Nikishkin</a><script data-card-contents-for-user="26501427" type="text/json">{"id":26501427,"first_name":"Vladimir","last_name":"Nikishkin","domain_name":"edinburgh","page_name":"VladimirNikishkin","display_name":"Vladimir Nikishkin","profile_url":"https://edinburgh.academia.edu/VladimirNikishkin?f_ri=454","photo":"https://0.academia-photos.com/26501427/7359123/8274306/s65_vladimir.nikishkin.jpg_oh_4f16dd29f41863de55e49ba20f10a2c4_oe_555719df___gda___1431803929_65869f6f2b8c79a994eb52f249a8673d"}</script></span></span></li><li class="js-paper-rank-work_44977858 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="44977858"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 44977858, container: ".js-paper-rank-work_44977858", }); });</script></li><li class="js-percentile-work_44977858 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 44977858; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_44977858"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_44977858 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="44977858"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 44977858; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=44977858]").text(description); $(".js-view-count-work_44977858").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_44977858").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="44977858"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="6575" href="https://www.academia.edu/Documents/in/Teaching_and_Learning_Programming">Teaching and Learning Programming</a>,&nbsp;<script data-card-contents-for-ri="6575" type="text/json">{"id":6575,"name":"Teaching and Learning Programming","url":"https://www.academia.edu/Documents/in/Teaching_and_Learning_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="36536" href="https://www.academia.edu/Documents/in/Reproducible_Research">Reproducible Research</a>,&nbsp;<script data-card-contents-for-ri="36536" type="text/json">{"id":36536,"name":"Reproducible Research","url":"https://www.academia.edu/Documents/in/Reproducible_Research?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="493350" href="https://www.academia.edu/Documents/in/Scheme_programing_language_">Scheme (programing language)</a><script data-card-contents-for-ri="493350" type="text/json">{"id":493350,"name":"Scheme (programing language)","url":"https://www.academia.edu/Documents/in/Scheme_programing_language_?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=44977858]'), work: {"id":44977858,"title":"Solving SICP: An Experience Report on Solving the World’s Most Famous Programming Problem Set","created_at":"2021-01-25T19:24:59.337-08:00","url":"https://www.academia.edu/44977858/Solving_SICP_An_Experience_Report_on_Solving_the_World_s_Most_Famous_Programming_Problem_Set?f_ri=454","dom_id":"work_44977858","summary":"This report is written as a post-mortem of a project that has, perhaps, been the author’s most extensive personal project: creating a complete and comprehensive solution to one of the most famous programming problem sets in the modern computer science curriculum Structure and Interpretation of Computer Programs by Abelson, G. J. Sussman, and J. Sussman. It measures exactly: • How much effort SICP requires (729 hours 19 minutes (over eight months), 292 sessions). • How many computer languages it involves (6). • How many pieces of software are required (9). • How much communication with peers is needed. It suggests: • A practical software-supported task management procedure for solving coursework. • Several improvements, on the technical side, to any hard skills teaching process. • Several improvements, on the social side, to any kind of teaching process. The solution is published online (the source code and pdf file): • http://gitlab.com/Lockywolf/chibi-sicp (Nikishkin 2020) This report (and the data in the appendix) can be applied immediately as: • A single-point estimate of the SICP problem set difficulty. • A class handout aimed at increasing students’ mo- tivation to study. • A data source for a study of learning patterns among adult professionals aiming for continuing education. • An “almost ready” protocol for a convenient problem- set solution procedure, which produces artefacts that can be later used as a student portfolio. • An “almost ready”, and “almost convenient” pro- tocol for measuring time consumption of almost any problem set expressible in a digital form. Additionally, a time-tracking data analysis can be re- produced interactively in the org-mode version of this report. (See: Appendix: Emacs Lisp code for data ana- lysis)","downloadable_attachments":[{"id":65515478,"asset_id":44977858,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":26501427,"first_name":"Vladimir","last_name":"Nikishkin","domain_name":"edinburgh","page_name":"VladimirNikishkin","display_name":"Vladimir Nikishkin","profile_url":"https://edinburgh.academia.edu/VladimirNikishkin?f_ri=454","photo":"https://0.academia-photos.com/26501427/7359123/8274306/s65_vladimir.nikishkin.jpg_oh_4f16dd29f41863de55e49ba20f10a2c4_oe_555719df___gda___1431803929_65869f6f2b8c79a994eb52f249a8673d"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":6575,"name":"Teaching and Learning Programming","url":"https://www.academia.edu/Documents/in/Teaching_and_Learning_Programming?f_ri=454","nofollow":false},{"id":36536,"name":"Reproducible Research","url":"https://www.academia.edu/Documents/in/Reproducible_Research?f_ri=454","nofollow":false},{"id":493350,"name":"Scheme (programing language)","url":"https://www.academia.edu/Documents/in/Scheme_programing_language_?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_1492061" data-work_id="1492061" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/1492061/An_Overview_of_the_Scala_Programming_Language">An Overview of the Scala Programming Language</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Scala fuses object-oriented and functional programming in a statically typed programming language. It is aimed at the construction of components and component systems. This paper gives an overview of the Scala language for readers who are... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_1492061" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Scala fuses object-oriented and functional programming in a statically typed programming language. It is aimed at the construction of components and component systems. This paper gives an overview of the Scala language for readers who are familar with programming methods and programming language design.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/1492061" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="9887d2597fca4e53376a95bf060544a0" rel="nofollow" data-download="{&quot;attachment_id&quot;:11686279,&quot;asset_id&quot;:1492061,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/11686279/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="1394708" href="https://africauniversity-ac.academia.edu/MalaikaMwepuLunda">Malaika Mwepu - Lunda</a><script data-card-contents-for-user="1394708" type="text/json">{"id":1394708,"first_name":"Malaika","last_name":"Mwepu - Lunda","domain_name":"africauniversity-ac","page_name":"MalaikaMwepuLunda","display_name":"Malaika Mwepu - Lunda","profile_url":"https://africauniversity-ac.academia.edu/MalaikaMwepuLunda?f_ri=454","photo":"https://0.academia-photos.com/1394708/7833317/8777703/s65_malaika.mwepu_-_lunda.jpg"}</script></span></span></li><li class="js-paper-rank-work_1492061 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="1492061"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 1492061, container: ".js-paper-rank-work_1492061", }); });</script></li><li class="js-percentile-work_1492061 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 1492061; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_1492061"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_1492061 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="1492061"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 1492061; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=1492061]").text(description); $(".js-view-count-work_1492061").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_1492061").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="1492061"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="39898" href="https://www.academia.edu/Documents/in/Path_Dependence">Path Dependence</a>,&nbsp;<script data-card-contents-for-ri="39898" type="text/json">{"id":39898,"name":"Path Dependence","url":"https://www.academia.edu/Documents/in/Path_Dependence?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="64025" href="https://www.academia.edu/Documents/in/Language_Design">Language Design</a>,&nbsp;<script data-card-contents-for-ri="64025" type="text/json">{"id":64025,"name":"Language Design","url":"https://www.academia.edu/Documents/in/Language_Design?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="67504" href="https://www.academia.edu/Documents/in/IT_adoption">IT adoption</a><script data-card-contents-for-ri="67504" type="text/json">{"id":67504,"name":"IT adoption","url":"https://www.academia.edu/Documents/in/IT_adoption?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=1492061]'), work: {"id":1492061,"title":"An Overview of the Scala Programming Language","created_at":"2012-03-29T22:48:28.936-07:00","url":"https://www.academia.edu/1492061/An_Overview_of_the_Scala_Programming_Language?f_ri=454","dom_id":"work_1492061","summary":"Scala fuses object-oriented and functional programming in a statically typed programming language. It is aimed at the construction of components and component systems. This paper gives an overview of the Scala language for readers who are familar with programming methods and programming language design.","downloadable_attachments":[{"id":11686279,"asset_id":1492061,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":1394708,"first_name":"Malaika","last_name":"Mwepu - Lunda","domain_name":"africauniversity-ac","page_name":"MalaikaMwepuLunda","display_name":"Malaika Mwepu - Lunda","profile_url":"https://africauniversity-ac.academia.edu/MalaikaMwepuLunda?f_ri=454","photo":"https://0.academia-photos.com/1394708/7833317/8777703/s65_malaika.mwepu_-_lunda.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":39898,"name":"Path Dependence","url":"https://www.academia.edu/Documents/in/Path_Dependence?f_ri=454","nofollow":false},{"id":64025,"name":"Language Design","url":"https://www.academia.edu/Documents/in/Language_Design?f_ri=454","nofollow":false},{"id":67504,"name":"IT adoption","url":"https://www.academia.edu/Documents/in/IT_adoption?f_ri=454","nofollow":false},{"id":371541,"name":"Type System","url":"https://www.academia.edu/Documents/in/Type_System?f_ri=454"},{"id":1121048,"name":"Object Oriented","url":"https://www.academia.edu/Documents/in/Object_Oriented?f_ri=454"},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_2636450" data-work_id="2636450" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/2636450/Comparative_Studies_of_10_Programming_Languages_within_10_Diverse_Criteria_a_Team_10_COMP6411_S10_Term_Report">Comparative Studies of 10 Programming Languages within 10 Diverse Criteria - a Team 10 COMP6411-S10 Term Report</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">This is a survey on the programming languages: C++, JavaScript, AspectJ, C#, Haskell, Java, PHP, Scala, Scheme, and BPEL. Our survey work involves a comparative study of these ten programming languages with respect to the following... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_2636450" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">This is a survey on the programming languages: C++, JavaScript, AspectJ, C#, Haskell, Java, PHP, Scala, Scheme, and BPEL. Our survey work involves a comparative study of these ten programming languages with respect to the following criteria: secure programming practices, web application development, web service composition, OOP-based abstractions, reflection, aspect orientation, functional programming, declarative programming, batch scripting, and UI prototyping. We study these languages in the context of the above mentioned criteria and the level of support they provide for each one of them.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/2636450" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="d0289f8038528a06d17a08d52a8cb77a" rel="nofollow" data-download="{&quot;attachment_id&quot;:32417198,&quot;asset_id&quot;:2636450,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/32417198/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="2800029" href="https://independent.academia.edu/AbenezerYohannes">Abenezer Yohannes</a><script data-card-contents-for-user="2800029" type="text/json">{"id":2800029,"first_name":"Abenezer","last_name":"Yohannes","domain_name":"independent","page_name":"AbenezerYohannes","display_name":"Abenezer Yohannes","profile_url":"https://independent.academia.edu/AbenezerYohannes?f_ri=454","photo":"https://0.academia-photos.com/2800029/1126848/1412439/s65_abenezer.yohannes.jpg"}</script></span></span></li><li class="js-paper-rank-work_2636450 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="2636450"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 2636450, container: ".js-paper-rank-work_2636450", }); });</script></li><li class="js-percentile-work_2636450 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 2636450; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_2636450"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_2636450 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="2636450"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 2636450; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=2636450]").text(description); $(".js-view-count-work_2636450").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_2636450").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="2636450"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">5</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="149786" href="https://www.academia.edu/Documents/in/Declarative_Programming">Declarative Programming</a>,&nbsp;<script data-card-contents-for-ri="149786" type="text/json">{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="247434" href="https://www.academia.edu/Documents/in/Web_service_composition">Web service composition</a>,&nbsp;<script data-card-contents-for-ri="247434" type="text/json">{"id":247434,"name":"Web service composition","url":"https://www.academia.edu/Documents/in/Web_service_composition?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1139482" href="https://www.academia.edu/Documents/in/Web_Application_Development">Web Application Development</a><script data-card-contents-for-ri="1139482" type="text/json">{"id":1139482,"name":"Web Application Development","url":"https://www.academia.edu/Documents/in/Web_Application_Development?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=2636450]'), work: {"id":2636450,"title":"Comparative Studies of 10 Programming Languages within 10 Diverse Criteria - a Team 10 COMP6411-S10 Term Report","created_at":"2013-02-23T14:55:08.881-08:00","url":"https://www.academia.edu/2636450/Comparative_Studies_of_10_Programming_Languages_within_10_Diverse_Criteria_a_Team_10_COMP6411_S10_Term_Report?f_ri=454","dom_id":"work_2636450","summary":"This is a survey on the programming languages: C++, JavaScript, AspectJ, C#, Haskell, Java, PHP, Scala, Scheme, and BPEL. Our survey work involves a comparative study of these ten programming languages with respect to the following criteria: secure programming practices, web application development, web service composition, OOP-based abstractions, reflection, aspect orientation, functional programming, declarative programming, batch scripting, and UI prototyping. We study these languages in the context of the above mentioned criteria and the level of support they provide for each one of them.","downloadable_attachments":[{"id":32417198,"asset_id":2636450,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":2800029,"first_name":"Abenezer","last_name":"Yohannes","domain_name":"independent","page_name":"AbenezerYohannes","display_name":"Abenezer Yohannes","profile_url":"https://independent.academia.edu/AbenezerYohannes?f_ri=454","photo":"https://0.academia-photos.com/2800029/1126848/1412439/s65_abenezer.yohannes.jpg"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false},{"id":247434,"name":"Web service composition","url":"https://www.academia.edu/Documents/in/Web_service_composition?f_ri=454","nofollow":false},{"id":1139482,"name":"Web Application Development","url":"https://www.academia.edu/Documents/in/Web_Application_Development?f_ri=454","nofollow":false},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_2403724" data-work_id="2403724" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/2403724/Applying_Functional_Programming_Theory_to_the_Design_of_Workflow_Engines">Applying Functional Programming Theory to the Design of Workflow Engines</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Workflow languages are a form of high-level programming language designed for coordinating tasks implemented by different pieces of software, often executed across multiple computers using technologies such as web services. Advantages of... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_2403724" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Workflow languages are a form of high-level programming language designed for coordinating tasks implemented by different pieces of software, often executed across multiple computers using technologies such as web services. Advantages of workflow languages include automatic parallelisation, built-in support for accessing services, and simple programming models that abstract away many of the complexities associated with distributed and parallel programming. In this thesis, we focus on data-oriented workflow languages, in which all computation is free of side effects. <br /> <br />Despite their advantages, existing workflow languages sacrifice support for internal computation and data manipulation, in an attempt to provide programming models that are simple to understand and contain implicit parallelism. These limitations inconvenience users, who are forced to define additional components in separate scripting languages whenever they need to implement programming logic that cannot be expressed in the workflow language itself. <br /> <br />In this thesis, we propose the use of functional programming as a model for data-oriented workflow languages. Functional programming languages are both highly expressive and amenable to automatic parallelisation. Our approach combines the coordination facilities of workflow languages with the computation facilities of functional programming languages, allowing both aspects of a workflow to be expressed in the one language. <br /> <br />We have designed and implemented a small functional language called ELC, which extends lambda calculus with a minimal set of features necessary for practical implementation of workflows. ELC can either be used directly, or as a compilation target for other workflow languages. Using this approach, we developed a compiler for XQuery, extended with support for web services. XQuery&#39;s native support for XML processing makes it well-suited for manipulating the XML data produced and consumed by web services. Both languages make it easy to develop complex workflows involving arbitrary computation and data manipulation. <br /> <br />Our workflow engine, NReduce, uses parallel graph reduction to execute workflows. It supports both orchestration, where a central node coordinates all service invocation, and choreography, where coordination, scheduling, and data transfer are carried out in a decentralised manner across multiple nodes. The details of orchestration and choreography are abstracted away from the programmer by the workflow engine. In both cases, parallel invocation of services is managed in a completely automatic manner, without any explicit direction from the programmer. <br /> <br />Our study includes an in-depth analysis of performance issues of relevance to our approach. This includes a discussion of performance problems encountered during our implementation work, and an explanation of the solutions we have devised to these. Such issues are likely to be of relevance to others developing workflow engines based on a similar model. We also benchmark our system using a range of workflows, demonstrating high levels of performance and scalability.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/2403724" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="ec42423deeae5ca867c0389d13b5c519" rel="nofollow" data-download="{&quot;attachment_id&quot;:30435160,&quot;asset_id&quot;:2403724,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/30435160/download_file?st=MTczNDAxMzQ1Miw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="3123302" href="https://adelaide.academia.edu/PeterKelly">Peter Kelly</a><script data-card-contents-for-user="3123302" type="text/json">{"id":3123302,"first_name":"Peter","last_name":"Kelly","domain_name":"adelaide","page_name":"PeterKelly","display_name":"Peter Kelly","profile_url":"https://adelaide.academia.edu/PeterKelly?f_ri=454","photo":"https://0.academia-photos.com/3123302/1026505/1282823/s65_peter.kelly.jpg"}</script></span></span></li><li class="js-paper-rank-work_2403724 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="2403724"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 2403724, container: ".js-paper-rank-work_2403724", }); });</script></li><li class="js-percentile-work_2403724 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 2403724; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_2403724"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_2403724 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="2403724"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 2403724; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=2403724]").text(description); $(".js-view-count-work_2403724").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_2403724").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="2403724"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="440" href="https://www.academia.edu/Documents/in/Distributed_Computing">Distributed Computing</a>,&nbsp;<script data-card-contents-for-ri="440" type="text/json">{"id":440,"name":"Distributed Computing","url":"https://www.academia.edu/Documents/in/Distributed_Computing?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="18765" href="https://www.academia.edu/Documents/in/Lambda_Calculus">Lambda Calculus</a>,&nbsp;<script data-card-contents-for-ri="18765" type="text/json">{"id":18765,"name":"Lambda Calculus","url":"https://www.academia.edu/Documents/in/Lambda_Calculus?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="21727" href="https://www.academia.edu/Documents/in/Scientific_Workflows">Scientific Workflows</a><script data-card-contents-for-ri="21727" type="text/json">{"id":21727,"name":"Scientific Workflows","url":"https://www.academia.edu/Documents/in/Scientific_Workflows?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=2403724]'), work: {"id":2403724,"title":"Applying Functional Programming Theory to the Design of Workflow Engines","created_at":"2013-01-15T08:45:05.419-08:00","url":"https://www.academia.edu/2403724/Applying_Functional_Programming_Theory_to_the_Design_of_Workflow_Engines?f_ri=454","dom_id":"work_2403724","summary":"Workflow languages are a form of high-level programming language designed for coordinating tasks implemented by different pieces of software, often executed across multiple computers using technologies such as web services. Advantages of workflow languages include automatic parallelisation, built-in support for accessing services, and simple programming models that abstract away many of the complexities associated with distributed and parallel programming. In this thesis, we focus on data-oriented workflow languages, in which all computation is free of side effects.\r\n\r\nDespite their advantages, existing workflow languages sacrifice support for internal computation and data manipulation, in an attempt to provide programming models that are simple to understand and contain implicit parallelism. These limitations inconvenience users, who are forced to define additional components in separate scripting languages whenever they need to implement programming logic that cannot be expressed in the workflow language itself.\r\n\r\nIn this thesis, we propose the use of functional programming as a model for data-oriented workflow languages. Functional programming languages are both highly expressive and amenable to automatic parallelisation. Our approach combines the coordination facilities of workflow languages with the computation facilities of functional programming languages, allowing both aspects of a workflow to be expressed in the one language.\r\n\r\nWe have designed and implemented a small functional language called ELC, which extends lambda calculus with a minimal set of features necessary for practical implementation of workflows. ELC can either be used directly, or as a compilation target for other workflow languages. Using this approach, we developed a compiler for XQuery, extended with support for web services. XQuery's native support for XML processing makes it well-suited for manipulating the XML data produced and consumed by web services. Both languages make it easy to develop complex workflows involving arbitrary computation and data manipulation.\r\n\r\nOur workflow engine, NReduce, uses parallel graph reduction to execute workflows. It supports both orchestration, where a central node coordinates all service invocation, and choreography, where coordination, scheduling, and data transfer are carried out in a decentralised manner across multiple nodes. The details of orchestration and choreography are abstracted away from the programmer by the workflow engine. In both cases, parallel invocation of services is managed in a completely automatic manner, without any explicit direction from the programmer.\r\n\r\nOur study includes an in-depth analysis of performance issues of relevance to our approach. This includes a discussion of performance problems encountered during our implementation work, and an explanation of the solutions we have devised to these. Such issues are likely to be of relevance to others developing workflow engines based on a similar model. We also benchmark our system using a range of workflows, demonstrating high levels of performance and scalability.","downloadable_attachments":[{"id":30435160,"asset_id":2403724,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":3123302,"first_name":"Peter","last_name":"Kelly","domain_name":"adelaide","page_name":"PeterKelly","display_name":"Peter Kelly","profile_url":"https://adelaide.academia.edu/PeterKelly?f_ri=454","photo":"https://0.academia-photos.com/3123302/1026505/1282823/s65_peter.kelly.jpg"}],"research_interests":[{"id":440,"name":"Distributed Computing","url":"https://www.academia.edu/Documents/in/Distributed_Computing?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":18765,"name":"Lambda Calculus","url":"https://www.academia.edu/Documents/in/Lambda_Calculus?f_ri=454","nofollow":false},{"id":21727,"name":"Scientific Workflows","url":"https://www.academia.edu/Documents/in/Scientific_Workflows?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_29430164" data-work_id="29430164" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/29430164/Functional_programming_with_bananas_lenses_envelopes_and_barbed_wire">Functional programming with bananas, lenses, envelopes and barbed wire</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_29430164" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example Functions in Bird and Wadler&#39;s &quot;Introduction to Functional Programming&quot; can be expressed using these operators.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/29430164" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="ff225844b5c33c493281d603fb7b4606" rel="nofollow" data-download="{&quot;attachment_id&quot;:49875765,&quot;asset_id&quot;:29430164,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/49875765/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="55633820" href="https://utwente.academia.edu/MaartenFokkinga">Maarten Fokkinga</a><script data-card-contents-for-user="55633820" type="text/json">{"id":55633820,"first_name":"Maarten","last_name":"Fokkinga","domain_name":"utwente","page_name":"MaartenFokkinga","display_name":"Maarten Fokkinga","profile_url":"https://utwente.academia.edu/MaartenFokkinga?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_29430164 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="29430164"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 29430164, container: ".js-paper-rank-work_29430164", }); });</script></li><li class="js-percentile-work_29430164 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 29430164; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_29430164"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_29430164 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="29430164"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 29430164; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=29430164]").text(description); $(".js-view-count-work_29430164").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_29430164").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="29430164"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">2</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1547415" href="https://www.academia.edu/Documents/in/Data_Type">Data Type</a><script data-card-contents-for-ri="1547415" type="text/json">{"id":1547415,"name":"Data Type","url":"https://www.academia.edu/Documents/in/Data_Type?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=29430164]'), work: {"id":29430164,"title":"Functional programming with bananas, lenses, envelopes and barbed wire","created_at":"2016-10-26T00:53:24.686-07:00","url":"https://www.academia.edu/29430164/Functional_programming_with_bananas_lenses_envelopes_and_barbed_wire?f_ri=454","dom_id":"work_29430164","summary":"We develop a calculus for lazy functional programming based on recursion operators associated with data type definitions. For these operators we derive various algebraic laws that are useful in deriving and manipulating programs. We shall show that all example Functions in Bird and Wadler's \"Introduction to Functional Programming\" can be expressed using these operators.","downloadable_attachments":[{"id":49875765,"asset_id":29430164,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":55633820,"first_name":"Maarten","last_name":"Fokkinga","domain_name":"utwente","page_name":"MaartenFokkinga","display_name":"Maarten Fokkinga","profile_url":"https://utwente.academia.edu/MaartenFokkinga?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":1547415,"name":"Data Type","url":"https://www.academia.edu/Documents/in/Data_Type?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_5377047" data-work_id="5377047" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/5377047/Units_of_Measure_A_Scala_Macro_System">Units of Measure - A Scala Macro System</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwendeten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit -einschließlich Tabellen, Karten und Abbildungen -, die... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_5377047" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwendeten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit -einschließlich Tabellen, Karten und Abbildungen -, die anderen Werken oder dem Internet im Wortlaut oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelle als Entlehnung kenntlich gemacht habe.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/5377047" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="3b8fafc9a3ecda47e5665eddaf91a792" rel="nofollow" data-download="{&quot;attachment_id&quot;:32521475,&quot;asset_id&quot;:5377047,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/32521475/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="7485508" href="https://independent.academia.edu/JulianSchrittwieser">Julian Schrittwieser</a><script data-card-contents-for-user="7485508" type="text/json">{"id":7485508,"first_name":"Julian","last_name":"Schrittwieser","domain_name":"independent","page_name":"JulianSchrittwieser","display_name":"Julian Schrittwieser","profile_url":"https://independent.academia.edu/JulianSchrittwieser?f_ri=454","photo":"https://gravatar.com/avatar/846e1b8f4447eeb12507d2ba80172d4a?s=65"}</script></span></span></li><li class="js-paper-rank-work_5377047 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="5377047"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 5377047, container: ".js-paper-rank-work_5377047", }); });</script></li><li class="js-percentile-work_5377047 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 5377047; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_5377047"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_5377047 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="5377047"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 5377047; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=5377047]").text(description); $(".js-view-count-work_5377047").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_5377047").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="5377047"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="451" href="https://www.academia.edu/Documents/in/Programming_Languages">Programming Languages</a>,&nbsp;<script data-card-contents-for-ri="451" type="text/json">{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="69005" href="https://www.academia.edu/Documents/in/Scala">Scala</a><script data-card-contents-for-ri="69005" type="text/json">{"id":69005,"name":"Scala","url":"https://www.academia.edu/Documents/in/Scala?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=5377047]'), work: {"id":5377047,"title":"Units of Measure - A Scala Macro System","created_at":"2013-12-10T04:31:31.024-08:00","url":"https://www.academia.edu/5377047/Units_of_Measure_A_Scala_Macro_System?f_ri=454","dom_id":"work_5377047","summary":"Hiermit erkläre ich, dass ich diese Arbeit selbständig verfasst habe, dass ich die verwendeten Quellen und Hilfsmittel vollständig angegeben habe und dass ich die Stellen der Arbeit -einschließlich Tabellen, Karten und Abbildungen -, die anderen Werken oder dem Internet im Wortlaut oder dem Sinn nach entnommen sind, auf jeden Fall unter Angabe der Quelle als Entlehnung kenntlich gemacht habe.","downloadable_attachments":[{"id":32521475,"asset_id":5377047,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":7485508,"first_name":"Julian","last_name":"Schrittwieser","domain_name":"independent","page_name":"JulianSchrittwieser","display_name":"Julian Schrittwieser","profile_url":"https://independent.academia.edu/JulianSchrittwieser?f_ri=454","photo":"https://gravatar.com/avatar/846e1b8f4447eeb12507d2ba80172d4a?s=65"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":69005,"name":"Scala","url":"https://www.academia.edu/Documents/in/Scala?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_499735" data-work_id="499735" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/499735/The_Calculator_Project_formal_reasoning_about_programs">The Calculator Project-formal reasoning about programs</a></div></div><div class="u-pb4x u-mt3x"></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/499735" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="3999ebd2e72422dc2cb30f4c9b536438" rel="nofollow" data-download="{&quot;attachment_id&quot;:2333817,&quot;asset_id&quot;:499735,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/2333817/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="68005" href="https://waikato.academia.edu/SteveReeves">Steve Reeves</a><script data-card-contents-for-user="68005" type="text/json">{"id":68005,"first_name":"Steve","last_name":"Reeves","domain_name":"waikato","page_name":"SteveReeves","display_name":"Steve Reeves","profile_url":"https://waikato.academia.edu/SteveReeves?f_ri=454","photo":"https://0.academia-photos.com/68005/84433/92322/s65_steve.reeves.jpg"}</script></span></span></li><li class="js-paper-rank-work_499735 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="499735"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 499735, container: ".js-paper-rank-work_499735", }); });</script></li><li class="js-percentile-work_499735 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 499735; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_499735"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_499735 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="499735"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 499735; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=499735]").text(description); $(".js-view-count-work_499735").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_499735").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="499735"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">16</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl10x"><a class="InlineList-item-text" data-has-card-for-ri="237" href="https://www.academia.edu/Documents/in/Cognitive_Science">Cognitive Science</a>,&nbsp;<script data-card-contents-for-ri="237" type="text/json">{"id":237,"name":"Cognitive Science","url":"https://www.academia.edu/Documents/in/Cognitive_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="472" href="https://www.academia.edu/Documents/in/Human_Computer_Interaction">Human Computer Interaction</a><script data-card-contents-for-ri="472" type="text/json">{"id":472,"name":"Human Computer Interaction","url":"https://www.academia.edu/Documents/in/Human_Computer_Interaction?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=499735]'), work: {"id":499735,"title":"The Calculator Project-formal reasoning about programs","created_at":"2011-03-29T18:51:27.664-07:00","url":"https://www.academia.edu/499735/The_Calculator_Project_formal_reasoning_about_programs?f_ri=454","dom_id":"work_499735","summary":null,"downloadable_attachments":[{"id":2333817,"asset_id":499735,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":68005,"first_name":"Steve","last_name":"Reeves","domain_name":"waikato","page_name":"SteveReeves","display_name":"Steve Reeves","profile_url":"https://waikato.academia.edu/SteveReeves?f_ri=454","photo":"https://0.academia-photos.com/68005/84433/92322/s65_steve.reeves.jpg"}],"research_interests":[{"id":237,"name":"Cognitive Science","url":"https://www.academia.edu/Documents/in/Cognitive_Science?f_ri=454","nofollow":false},{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":472,"name":"Human Computer Interaction","url":"https://www.academia.edu/Documents/in/Human_Computer_Interaction?f_ri=454","nofollow":false},{"id":491,"name":"Information Technology","url":"https://www.academia.edu/Documents/in/Information_Technology?f_ri=454"},{"id":1128,"name":"Computer Science Education","url":"https://www.academia.edu/Documents/in/Computer_Science_Education?f_ri=454"},{"id":4761,"name":"Software Testing","url":"https://www.academia.edu/Documents/in/Software_Testing?f_ri=454"},{"id":9967,"name":"Software Engineering education","url":"https://www.academia.edu/Documents/in/Software_Engineering_education?f_ri=454"},{"id":53825,"name":"Open University","url":"https://www.academia.edu/Documents/in/Open_University?f_ri=454"},{"id":96628,"name":"Formal Specification","url":"https://www.academia.edu/Documents/in/Formal_Specification?f_ri=454"},{"id":131903,"name":"Arithmetic","url":"https://www.academia.edu/Documents/in/Arithmetic?f_ri=454"},{"id":210250,"name":"Formal Reasoning","url":"https://www.academia.edu/Documents/in/Formal_Reasoning?f_ri=454"},{"id":442734,"name":"First Year","url":"https://www.academia.edu/Documents/in/First_Year?f_ri=454"},{"id":475847,"name":"Student Performance","url":"https://www.academia.edu/Documents/in/Student_Performance?f_ri=454"},{"id":998345,"name":"Digital System Testing","url":"https://www.academia.edu/Documents/in/Digital_System_Testing?f_ri=454"},{"id":1771673,"name":"Software Performance","url":"https://www.academia.edu/Documents/in/Software_Performance?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_30177309" data-work_id="30177309" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/30177309/Secure_distributed_programming_with_value_dependent_types">Secure distributed programming with value-dependent types</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest">This is paper is a draft. It is an extended version of a shorter paper of the same title. It differs from the short paper in the following regards:</div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/30177309" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="78dd4821e879e2f931435e4d555d0fd9" rel="nofollow" data-download="{&quot;attachment_id&quot;:50635496,&quot;asset_id&quot;:30177309,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/50635496/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="37666301" href="https://independent.academia.edu/PierreyvesStrub">Pierre-yves Strub</a><script data-card-contents-for-user="37666301" type="text/json">{"id":37666301,"first_name":"Pierre-yves","last_name":"Strub","domain_name":"independent","page_name":"PierreyvesStrub","display_name":"Pierre-yves Strub","profile_url":"https://independent.academia.edu/PierreyvesStrub?f_ri=454","photo":"https://gravatar.com/avatar/d4998b1315e544c072788a951eff31d5?s=65"}</script></span></span></li><li class="js-paper-rank-work_30177309 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="30177309"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 30177309, container: ".js-paper-rank-work_30177309", }); });</script></li><li class="js-percentile-work_30177309 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 30177309; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_30177309"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_30177309 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="30177309"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 30177309; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=30177309]").text(description); $(".js-view-count-work_30177309").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_30177309").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="30177309"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">6</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="305" href="https://www.academia.edu/Documents/in/Applied_Mathematics">Applied Mathematics</a>,&nbsp;<script data-card-contents-for-ri="305" type="text/json">{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="64561" href="https://www.academia.edu/Documents/in/Computer_Software">Computer Software</a>,&nbsp;<script data-card-contents-for-ri="64561" type="text/json">{"id":64561,"name":"Computer Software","url":"https://www.academia.edu/Documents/in/Computer_Software?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="122070" href="https://www.academia.edu/Documents/in/Zero-Knowledge_Proofs">Zero-Knowledge Proofs</a><script data-card-contents-for-ri="122070" type="text/json">{"id":122070,"name":"Zero-Knowledge Proofs","url":"https://www.academia.edu/Documents/in/Zero-Knowledge_Proofs?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=30177309]'), work: {"id":30177309,"title":"Secure distributed programming with value-dependent types","created_at":"2016-11-30T06:21:12.731-08:00","url":"https://www.academia.edu/30177309/Secure_distributed_programming_with_value_dependent_types?f_ri=454","dom_id":"work_30177309","summary":"This is paper is a draft. It is an extended version of a shorter paper of the same title. It differs from the short paper in the following regards:","downloadable_attachments":[{"id":50635496,"asset_id":30177309,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":37666301,"first_name":"Pierre-yves","last_name":"Strub","domain_name":"independent","page_name":"PierreyvesStrub","display_name":"Pierre-yves Strub","profile_url":"https://independent.academia.edu/PierreyvesStrub?f_ri=454","photo":"https://gravatar.com/avatar/d4998b1315e544c072788a951eff31d5?s=65"}],"research_interests":[{"id":305,"name":"Applied Mathematics","url":"https://www.academia.edu/Documents/in/Applied_Mathematics?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":64561,"name":"Computer Software","url":"https://www.academia.edu/Documents/in/Computer_Software?f_ri=454","nofollow":false},{"id":122070,"name":"Zero-Knowledge Proofs","url":"https://www.academia.edu/Documents/in/Zero-Knowledge_Proofs?f_ri=454","nofollow":false},{"id":556845,"name":"Numerical Analysis and Computational Mathematics","url":"https://www.academia.edu/Documents/in/Numerical_Analysis_and_Computational_Mathematics?f_ri=454"},{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_7376978" data-work_id="7376978" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/7376978/Comparative_Studies_of_10_Programming_Languages_within_10_Diverse_Criteria_a_Team_10_COMP6411_S10_Term_Report">Comparative Studies of 10 Programming Languages within 10 Diverse Criteria - a Team 10 COMP6411-S10 Term Report</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">This is a survey on the programming languages: C++, JavaScript, AspectJ, C#, Haskell, Java, PHP, Scala, Scheme, and BPEL. Our survey work involves a comparative study of these ten programming languages with respect to the following... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_7376978" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">This is a survey on the programming languages: C++, JavaScript, AspectJ, C#, Haskell, Java, PHP, Scala, Scheme, and BPEL. Our survey work involves a comparative study of these ten programming languages with respect to the following criteria: secure programming practices, web application development, web service composition, OOP-based abstractions, reflection, aspect orientation, functional programming, declarative programming, batch scripting, and UI prototyping. We study these languages in the context of the above mentioned criteria and the level of support they provide for each one of them.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/7376978" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="f2e905e91333163a0e6baf201b0d47b7" rel="nofollow" data-download="{&quot;attachment_id&quot;:48510562,&quot;asset_id&quot;:7376978,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/48510562/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="13023059" href="https://independent.academia.edu/RanaFahim">Rana Fahim</a><script data-card-contents-for-user="13023059" type="text/json">{"id":13023059,"first_name":"Rana","last_name":"Fahim","domain_name":"independent","page_name":"RanaFahim","display_name":"Rana Fahim","profile_url":"https://independent.academia.edu/RanaFahim?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_7376978 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="7376978"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 7376978, container: ".js-paper-rank-work_7376978", }); });</script></li><li class="js-percentile-work_7376978 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 7376978; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_7376978"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_7376978 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="7376978"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 7376978; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=7376978]").text(description); $(".js-view-count-work_7376978").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_7376978").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="7376978"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">5</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="149786" href="https://www.academia.edu/Documents/in/Declarative_Programming">Declarative Programming</a>,&nbsp;<script data-card-contents-for-ri="149786" type="text/json">{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="247434" href="https://www.academia.edu/Documents/in/Web_service_composition">Web service composition</a>,&nbsp;<script data-card-contents-for-ri="247434" type="text/json">{"id":247434,"name":"Web service composition","url":"https://www.academia.edu/Documents/in/Web_service_composition?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="1139482" href="https://www.academia.edu/Documents/in/Web_Application_Development">Web Application Development</a><script data-card-contents-for-ri="1139482" type="text/json">{"id":1139482,"name":"Web Application Development","url":"https://www.academia.edu/Documents/in/Web_Application_Development?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=7376978]'), work: {"id":7376978,"title":"Comparative Studies of 10 Programming Languages within 10 Diverse Criteria - a Team 10 COMP6411-S10 Term Report","created_at":"2014-06-17T07:27:22.618-07:00","url":"https://www.academia.edu/7376978/Comparative_Studies_of_10_Programming_Languages_within_10_Diverse_Criteria_a_Team_10_COMP6411_S10_Term_Report?f_ri=454","dom_id":"work_7376978","summary":"This is a survey on the programming languages: C++, JavaScript, AspectJ, C#, Haskell, Java, PHP, Scala, Scheme, and BPEL. Our survey work involves a comparative study of these ten programming languages with respect to the following criteria: secure programming practices, web application development, web service composition, OOP-based abstractions, reflection, aspect orientation, functional programming, declarative programming, batch scripting, and UI prototyping. We study these languages in the context of the above mentioned criteria and the level of support they provide for each one of them.","downloadable_attachments":[{"id":48510562,"asset_id":7376978,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":13023059,"first_name":"Rana","last_name":"Fahim","domain_name":"independent","page_name":"RanaFahim","display_name":"Rana Fahim","profile_url":"https://independent.academia.edu/RanaFahim?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":149786,"name":"Declarative Programming","url":"https://www.academia.edu/Documents/in/Declarative_Programming?f_ri=454","nofollow":false},{"id":247434,"name":"Web service composition","url":"https://www.academia.edu/Documents/in/Web_service_composition?f_ri=454","nofollow":false},{"id":1139482,"name":"Web Application Development","url":"https://www.academia.edu/Documents/in/Web_Application_Development?f_ri=454","nofollow":false},{"id":1489478,"name":"Programming language","url":"https://www.academia.edu/Documents/in/Programming_language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_73432034" data-work_id="73432034" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/73432034/Software_is_discrete_mathematics">Software is discrete mathematics</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">A three-year study collected information bearing on the question of whether studying mathematics improves programming skills. An analysis of the data revealed significant differences in the programming effectiveness of two populations of... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_73432034" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">A three-year study collected information bearing on the question of whether studying mathematics improves programming skills. An analysis of the data revealed significant differences in the programming effectiveness of two populations of students: (1) those who studied discrete mathematics through examples focused on reasoning about software and (2) those who studied the same mathematical topics illustrated with more traditional examples. Functional programming played a central role in the study because it provides a straightforward framework for the presentation of concepts such as predicate logic and proof by induction. Such topics can be covered in depth, staying almost entirely within the context of reasoning about software. The intricate complexities in logic that mutable variables carry with them need not arise, early on, to confuse novices struggling to understand new ideas. In addition, because functional languages provide useful and compact ways to express mathematical concepts, and because the choice of notation in mathematics courses is often at the discretion of the instructor (in contrast to the notational restrictions often fiercely guarded by the faculty in programming courses), discrete mathematics courses, as they are found in most computer science programs, provide an easy opportunity to enhance the education of students by exposing them to functional programming concepts.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/73432034" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="3e107f61fc431d4a21d3900faf2f84d2" rel="nofollow" data-download="{&quot;attachment_id&quot;:81955893,&quot;asset_id&quot;:73432034,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/81955893/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="43411595" href="https://independent.academia.edu/RexPage">Rex Page</a><script data-card-contents-for-user="43411595" type="text/json">{"id":43411595,"first_name":"Rex","last_name":"Page","domain_name":"independent","page_name":"RexPage","display_name":"Rex Page","profile_url":"https://independent.academia.edu/RexPage?f_ri=454","photo":"/images/s65_no_pic.png"}</script></span></span></li><li class="js-paper-rank-work_73432034 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="73432034"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 73432034, container: ".js-paper-rank-work_73432034", }); });</script></li><li class="js-percentile-work_73432034 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 73432034; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_73432034"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_73432034 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="73432034"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 73432034; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=73432034]").text(description); $(".js-view-count-work_73432034").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_73432034").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="73432034"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="449" href="https://www.academia.edu/Documents/in/Software_Engineering">Software Engineering</a>,&nbsp;<script data-card-contents-for-ri="449" type="text/json">{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="14681" href="https://www.academia.edu/Documents/in/Formal_methods">Formal methods</a>,&nbsp;<script data-card-contents-for-ri="14681" type="text/json">{"id":14681,"name":"Formal methods","url":"https://www.academia.edu/Documents/in/Formal_methods?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="37345" href="https://www.academia.edu/Documents/in/Discrete_Mathematics">Discrete Mathematics</a><script data-card-contents-for-ri="37345" type="text/json">{"id":37345,"name":"Discrete Mathematics","url":"https://www.academia.edu/Documents/in/Discrete_Mathematics?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=73432034]'), work: {"id":73432034,"title":"Software is discrete mathematics","created_at":"2022-03-09T16:07:14.470-08:00","url":"https://www.academia.edu/73432034/Software_is_discrete_mathematics?f_ri=454","dom_id":"work_73432034","summary":"A three-year study collected information bearing on the question of whether studying mathematics improves programming skills. An analysis of the data revealed significant differences in the programming effectiveness of two populations of students: (1) those who studied discrete mathematics through examples focused on reasoning about software and (2) those who studied the same mathematical topics illustrated with more traditional examples. Functional programming played a central role in the study because it provides a straightforward framework for the presentation of concepts such as predicate logic and proof by induction. Such topics can be covered in depth, staying almost entirely within the context of reasoning about software. The intricate complexities in logic that mutable variables carry with them need not arise, early on, to confuse novices struggling to understand new ideas. In addition, because functional languages provide useful and compact ways to express mathematical concepts, and because the choice of notation in mathematics courses is often at the discretion of the instructor (in contrast to the notational restrictions often fiercely guarded by the faculty in programming courses), discrete mathematics courses, as they are found in most computer science programs, provide an easy opportunity to enhance the education of students by exposing them to functional programming concepts.","downloadable_attachments":[{"id":81955893,"asset_id":73432034,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":43411595,"first_name":"Rex","last_name":"Page","domain_name":"independent","page_name":"RexPage","display_name":"Rex Page","profile_url":"https://independent.academia.edu/RexPage?f_ri=454","photo":"/images/s65_no_pic.png"}],"research_interests":[{"id":449,"name":"Software Engineering","url":"https://www.academia.edu/Documents/in/Software_Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":14681,"name":"Formal methods","url":"https://www.academia.edu/Documents/in/Formal_methods?f_ri=454","nofollow":false},{"id":37345,"name":"Discrete Mathematics","url":"https://www.academia.edu/Documents/in/Discrete_Mathematics?f_ri=454","nofollow":false},{"id":126194,"name":"Formal method","url":"https://www.academia.edu/Documents/in/Formal_method?f_ri=454"},{"id":1308979,"name":"Predicate Logic","url":"https://www.academia.edu/Documents/in/Predicate_Logic?f_ri=454"},{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_13184201" data-work_id="13184201" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/13184201/Lambda_dropping">Lambda-dropping</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest">Lambda-lifting a block-structured program transforms it into a set of recursive equations. We present the symmetric transformation: lambdadropping. Lambda-dropping a set of recursive equations restores block structure and lexical scope.</div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/13184201" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="ede7a93a5c5efffe6179226c47cbaedb" rel="nofollow" data-download="{&quot;attachment_id&quot;:45610182,&quot;asset_id&quot;:13184201,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/45610182/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="32440147" href="https://maritimearchaeology.academia.edu/UlrikSchultz">Ulrik Schultz</a><script data-card-contents-for-user="32440147" type="text/json">{"id":32440147,"first_name":"Ulrik","last_name":"Schultz","domain_name":"maritimearchaeology","page_name":"UlrikSchultz","display_name":"Ulrik Schultz","profile_url":"https://maritimearchaeology.academia.edu/UlrikSchultz?f_ri=454","photo":"https://gravatar.com/avatar/bc232c6f6d765271eeac6a67e1a7664f?s=65"}</script></span></span></li><li class="js-paper-rank-work_13184201 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="13184201"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 13184201, container: ".js-paper-rank-work_13184201", }); });</script></li><li class="js-percentile-work_13184201 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 13184201; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_13184201"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_13184201 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="13184201"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 13184201; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=13184201]").text(description); $(".js-view-count-work_13184201").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_13184201").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="13184201"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">8</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="17100" href="https://www.academia.edu/Documents/in/Theoretical_Computer_Science">Theoretical Computer Science</a>,&nbsp;<script data-card-contents-for-ri="17100" type="text/json">{"id":17100,"name":"Theoretical Computer Science","url":"https://www.academia.edu/Documents/in/Theoretical_Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="71833" href="https://www.academia.edu/Documents/in/Program_Transformation">Program Transformation</a>,&nbsp;<script data-card-contents-for-ri="71833" type="text/json">{"id":71833,"name":"Program Transformation","url":"https://www.academia.edu/Documents/in/Program_Transformation?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="80414" href="https://www.academia.edu/Documents/in/Mathematical_Sciences">Mathematical Sciences</a><script data-card-contents-for-ri="80414" type="text/json">{"id":80414,"name":"Mathematical Sciences","url":"https://www.academia.edu/Documents/in/Mathematical_Sciences?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=13184201]'), work: {"id":13184201,"title":"Lambda-dropping","created_at":"2015-06-22T13:41:28.175-07:00","url":"https://www.academia.edu/13184201/Lambda_dropping?f_ri=454","dom_id":"work_13184201","summary":"Lambda-lifting a block-structured program transforms it into a set of recursive equations. We present the symmetric transformation: lambdadropping. Lambda-dropping a set of recursive equations restores block structure and lexical scope.","downloadable_attachments":[{"id":45610182,"asset_id":13184201,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":32440147,"first_name":"Ulrik","last_name":"Schultz","domain_name":"maritimearchaeology","page_name":"UlrikSchultz","display_name":"Ulrik Schultz","profile_url":"https://maritimearchaeology.academia.edu/UlrikSchultz?f_ri=454","photo":"https://gravatar.com/avatar/bc232c6f6d765271eeac6a67e1a7664f?s=65"}],"research_interests":[{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":17100,"name":"Theoretical Computer Science","url":"https://www.academia.edu/Documents/in/Theoretical_Computer_Science?f_ri=454","nofollow":false},{"id":71833,"name":"Program Transformation","url":"https://www.academia.edu/Documents/in/Program_Transformation?f_ri=454","nofollow":false},{"id":80414,"name":"Mathematical Sciences","url":"https://www.academia.edu/Documents/in/Mathematical_Sciences?f_ri=454","nofollow":false},{"id":96047,"name":"Case Study","url":"https://www.academia.edu/Documents/in/Case_Study?f_ri=454"},{"id":1772107,"name":"Functional Language","url":"https://www.academia.edu/Documents/in/Functional_Language?f_ri=454"},{"id":1991705,"name":"PARTIAL EVALUATION","url":"https://www.academia.edu/Documents/in/PARTIAL_EVALUATION?f_ri=454"},{"id":2361349,"name":"Call graph","url":"https://www.academia.edu/Documents/in/Call_graph?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_3144652" data-work_id="3144652" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/3144652/An_Implementation_of_LispKit_Lisp_Translator">An Implementation of LispKit Lisp Translator</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">The programming language LISPKIT LISP is the one dialect of the programming language LISP. In this paper was described the one implementation of the translator of LISPKIT Lisp-language to SECD-machine language. The implementation is... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_3144652" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">The programming language LISPKIT LISP is the one dialect of the programming language LISP. In this paper was described the one implementation of the translator of LISPKIT Lisp-language to SECD-machine language. The implementation is completed in FORTRAN-language and is tested on the DELTA 11/340 computer system of the Institute of mathematics, University of Novi Sad. The translator is the part of LISPKIT Lisp-language interpreter. The authors don&#39;t know any similar implementation of LISPKIT Lisp-interpreter in Yugoslavia. <br /> <br />Informatica - An International Journal of Computing and Informatics <br />Print edition ISSN: 0350-5596 <br />Web edition ISSN: 1854-3871 <br />ISSN 0350-5596 <br /><a href="http://www.informatica.si/PDF/Informatica_1984_1.pdf" rel="nofollow">http://www.informatica.si/PDF/Informatica_1984_1.pdf</a></div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/3144652" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="56895dd25ab4105c5db51d00e40a0d31" rel="nofollow" data-download="{&quot;attachment_id&quot;:31052600,&quot;asset_id&quot;:3144652,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/31052600/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="572739" href="https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic">Ljubomir Jerinic</a><script data-card-contents-for-user="572739" type="text/json">{"id":572739,"first_name":"Ljubomir","last_name":"Jerinic","domain_name":"novisaddepartmentofmathematicsandinformatics","page_name":"LjubomirJerinic","display_name":"Ljubomir Jerinic","profile_url":"https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic?f_ri=454","photo":"https://0.academia-photos.com/572739/204311/238412/s65_ljubomir.jerinic.jpg"}</script></span></span></li><li class="js-paper-rank-work_3144652 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="3144652"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 3144652, container: ".js-paper-rank-work_3144652", }); });</script></li><li class="js-percentile-work_3144652 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 3144652; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_3144652"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_3144652 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="3144652"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 3144652; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=3144652]").text(description); $(".js-view-count-work_3144652").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_3144652").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="3144652"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">4</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="451" href="https://www.academia.edu/Documents/in/Programming_Languages">Programming Languages</a>,&nbsp;<script data-card-contents-for-ri="451" type="text/json">{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="55036" href="https://www.academia.edu/Documents/in/LISP">LISP</a><script data-card-contents-for-ri="55036" type="text/json">{"id":55036,"name":"LISP","url":"https://www.academia.edu/Documents/in/LISP?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=3144652]'), work: {"id":3144652,"title":"An Implementation of LispKit Lisp Translator","created_at":"2013-03-28T09:56:21.107-07:00","url":"https://www.academia.edu/3144652/An_Implementation_of_LispKit_Lisp_Translator?f_ri=454","dom_id":"work_3144652","summary":"The programming language LISPKIT LISP is the one dialect of the programming language LISP. In this paper was described the one implementation of the translator of LISPKIT Lisp-language to SECD-machine language. The implementation is completed in FORTRAN-language and is tested on the DELTA 11/340 computer system of the Institute of mathematics, University of Novi Sad. The translator is the part of LISPKIT Lisp-language interpreter. The authors don't know any similar implementation of LISPKIT Lisp-interpreter in Yugoslavia.\r\n\r\nInformatica - An International Journal of Computing and Informatics\r\nPrint edition ISSN: 0350-5596\r\nWeb edition ISSN: 1854-3871\r\nISSN 0350-5596\r\nhttp://www.informatica.si/PDF/Informatica_1984_1.pdf","downloadable_attachments":[{"id":31052600,"asset_id":3144652,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":572739,"first_name":"Ljubomir","last_name":"Jerinic","domain_name":"novisaddepartmentofmathematicsandinformatics","page_name":"LjubomirJerinic","display_name":"Ljubomir Jerinic","profile_url":"https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic?f_ri=454","photo":"https://0.academia-photos.com/572739/204311/238412/s65_ljubomir.jerinic.jpg"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":55036,"name":"LISP","url":"https://www.academia.edu/Documents/in/LISP?f_ri=454","nofollow":false}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_9818117" data-work_id="9818117" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/9818117/Cyclic_Reference_Counting_with_Lazy_Mark_Scan">Cyclic Reference Counting with Lazy Mark-Scan</a></div></div><div class="u-pb4x u-mt3x"></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/9818117" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="9cd795ae6b465f6964125c9e86857d25" rel="nofollow" data-download="{&quot;attachment_id&quot;:47637270,&quot;asset_id&quot;:9818117,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/47637270/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="23671603" href="https://ufpe.academia.edu/RafaelLins">Rafael Dueire Lins</a><script data-card-contents-for-user="23671603" type="text/json">{"id":23671603,"first_name":"Rafael","last_name":"Dueire Lins","domain_name":"ufpe","page_name":"RafaelLins","display_name":"Rafael Dueire Lins","profile_url":"https://ufpe.academia.edu/RafaelLins?f_ri=454","photo":"https://0.academia-photos.com/23671603/6417536/12945241/s65_rafael.lins.jpg"}</script></span></span></li><li class="js-paper-rank-work_9818117 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="9818117"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 9818117, container: ".js-paper-rank-work_9818117", }); });</script></li><li class="js-percentile-work_9818117 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 9818117; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_9818117"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_9818117 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="9818117"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 9818117; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=9818117]").text(description); $(".js-view-count-work_9818117").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_9818117").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="9818117"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">6</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="48" href="https://www.academia.edu/Documents/in/Engineering">Engineering</a>,&nbsp;<script data-card-contents-for-ri="48" type="text/json">{"id":48,"name":"Engineering","url":"https://www.academia.edu/Documents/in/Engineering?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a>,&nbsp;<script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="457" href="https://www.academia.edu/Documents/in/Compilers">Compilers</a>,&nbsp;<script data-card-contents-for-ri="457" type="text/json">{"id":457,"name":"Compilers","url":"https://www.academia.edu/Documents/in/Compilers?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="80414" href="https://www.academia.edu/Documents/in/Mathematical_Sciences">Mathematical Sciences</a><script data-card-contents-for-ri="80414" type="text/json">{"id":80414,"name":"Mathematical Sciences","url":"https://www.academia.edu/Documents/in/Mathematical_Sciences?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=9818117]'), work: {"id":9818117,"title":"Cyclic Reference Counting with Lazy Mark-Scan","created_at":"2014-12-17T16:58:16.813-08:00","url":"https://www.academia.edu/9818117/Cyclic_Reference_Counting_with_Lazy_Mark_Scan?f_ri=454","dom_id":"work_9818117","summary":null,"downloadable_attachments":[{"id":47637270,"asset_id":9818117,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":23671603,"first_name":"Rafael","last_name":"Dueire Lins","domain_name":"ufpe","page_name":"RafaelLins","display_name":"Rafael Dueire Lins","profile_url":"https://ufpe.academia.edu/RafaelLins?f_ri=454","photo":"https://0.academia-photos.com/23671603/6417536/12945241/s65_rafael.lins.jpg"}],"research_interests":[{"id":48,"name":"Engineering","url":"https://www.academia.edu/Documents/in/Engineering?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":457,"name":"Compilers","url":"https://www.academia.edu/Documents/in/Compilers?f_ri=454","nofollow":false},{"id":80414,"name":"Mathematical Sciences","url":"https://www.academia.edu/Documents/in/Mathematical_Sciences?f_ri=454","nofollow":false},{"id":124849,"name":"Garbage Collection","url":"https://www.academia.edu/Documents/in/Garbage_Collection?f_ri=454"},{"id":417664,"name":"Reference Counting","url":"https://www.academia.edu/Documents/in/Reference_Counting?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div><div class="u-borderBottom1 u-borderColorGrayLighter"><div class="clearfix u-pv7x u-mb0x js-work-card work_3142608" data-work_id="3142608" itemscope="itemscope" itemtype="https://schema.org/ScholarlyArticle"><div class="header"><div class="title u-fontSerif u-fs22 u-lineHeight1_3"><a class="u-tcGrayDarkest js-work-link" href="https://www.academia.edu/3142608/A_Perspective_on_Combining_Different_Programming_Paradigms">A Perspective on Combining Different Programming Paradigms</a></div></div><div class="u-pb4x u-mt3x"><div class="summary u-fs14 u-fw300 u-lineHeight1_5 u-tcGrayDarkest"><div class="summarized">The motivation and the basic issues for designing the programming system -ELa, that allowed combination of different programming paradigms is presented in the part one of this paper. In the ELa system distinct styles of programming... <a class="more_link u-tcGrayDark u-linkUnstyled" data-container=".work_3142608" data-show=".complete" data-hide=".summarized" data-more-link-behavior="true" href="#">more</a></div><div class="complete hidden">The motivation and the basic issues for designing the programming system -ELa, that allowed combination of different programming paradigms is presented in the part one of this paper. In the ELa system distinct styles of programming (functional, logic and object-oriented) are enabled. The system is currently under development at the Institute of Mathematics in Novi Sad. In this paper we describe the problem definition of a multiprogramming system, and the current state of realization of that programming system. In the part two we will illustrate the ELa system that permit the combination of the functional, the logical and the object-oriented paradigm of programming.</div></div></div><ul class="InlineList u-ph0x u-fs13"><li class="InlineList-item logged_in_only"><div class="share_on_academia_work_button"><a class="academia_share Button Button--inverseBlue Button--sm js-bookmark-button" data-academia-share="Work/3142608" data-share-source="work_strip" data-spinner="small_white_hide_contents"><i class="fa fa-plus"></i><span class="work-strip-link-text u-ml1x" data-content="button_text">Bookmark</span></a></div></li><li class="InlineList-item"><div class="download"><a id="95d7763074a1e611f37939d98094a2a8" rel="nofollow" data-download="{&quot;attachment_id&quot;:31050786,&quot;asset_id&quot;:3142608,&quot;asset_type&quot;:&quot;Work&quot;,&quot;always_allow_download&quot;:false,&quot;track&quot;:null,&quot;button_location&quot;:&quot;work_strip&quot;,&quot;source&quot;:null,&quot;hide_modal&quot;:null}" class="Button Button--sm Button--inverseGreen js-download-button prompt_button doc_download" href="https://www.academia.edu/attachments/31050786/download_file?st=MTczNDAxMzQ1Myw4LjIyMi4yMDguMTQ2&s=work_strip"><i class="fa fa-arrow-circle-o-down fa-lg"></i><span class="u-textUppercase u-ml1x" data-content="button_text">Download</span></a></div></li><li class="InlineList-item"><ul class="InlineList InlineList--bordered u-ph0x"><li class="InlineList-item InlineList-item--bordered"><span class="InlineList-item-text">by&nbsp;<span itemscope="itemscope" itemprop="author" itemtype="https://schema.org/Person"><a class="u-tcGrayDark u-fw700" data-has-card-for-user="572739" href="https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic">Ljubomir Jerinic</a><script data-card-contents-for-user="572739" type="text/json">{"id":572739,"first_name":"Ljubomir","last_name":"Jerinic","domain_name":"novisaddepartmentofmathematicsandinformatics","page_name":"LjubomirJerinic","display_name":"Ljubomir Jerinic","profile_url":"https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic?f_ri=454","photo":"https://0.academia-photos.com/572739/204311/238412/s65_ljubomir.jerinic.jpg"}</script></span></span></li><li class="js-paper-rank-work_3142608 InlineList-item InlineList-item--bordered hidden"><span class="js-paper-rank-view hidden u-tcGrayDark" data-paper-rank-work-id="3142608"><i class="u-m1x fa fa-bar-chart"></i><strong class="js-paper-rank"></strong></span><script>$(function() { new Works.PaperRankView({ workId: 3142608, container: ".js-paper-rank-work_3142608", }); });</script></li><li class="js-percentile-work_3142608 InlineList-item InlineList-item--bordered hidden u-tcGrayDark"><span class="percentile-widget hidden"><span class="u-mr2x percentile-widget" style="display: none">•</span><span class="u-mr2x work-percentile"></span></span><script>$(function () { var workId = 3142608; window.Academia.workPercentilesFetcher.queue(workId, function (percentileText) { var container = $(".js-percentile-work_3142608"); container.find('.work-percentile').text(percentileText.charAt(0).toUpperCase() + percentileText.slice(1)); container.find('.percentile-widget').show(); container.find('.percentile-widget').removeClass('hidden'); }); });</script></li><li class="js-view-count-work_3142608 InlineList-item InlineList-item--bordered hidden"><div><span><span class="js-view-count view-count u-mr2x" data-work-id="3142608"><i class="fa fa-spinner fa-spin"></i></span><script>$(function () { var workId = 3142608; window.Academia.workViewCountsFetcher.queue(workId, function (count) { var description = window.$h.commaizeInt(count) + " " + window.$h.pluralize(count, 'View'); $(".js-view-count[data-work-id=3142608]").text(description); $(".js-view-count-work_3142608").attr('title', description).tooltip(); }); });</script></span><script>$(function() { $(".js-view-count-work_3142608").removeClass('hidden') })</script></div></li><li class="InlineList-item u-positionRelative" style="max-width: 250px"><div class="u-positionAbsolute" data-has-card-for-ri-list="3142608"><i class="fa fa-tag InlineList-item-icon u-positionRelative"></i>&nbsp;&nbsp;<a class="InlineList-item-text u-positionRelative">7</a>&nbsp;&nbsp;</div><span class="InlineList-item-text u-textTruncate u-pl9x"><a class="InlineList-item-text" data-has-card-for-ri="422" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a>,&nbsp;<script data-card-contents-for-ri="422" type="text/json">{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="451" href="https://www.academia.edu/Documents/in/Programming_Languages">Programming Languages</a>,&nbsp;<script data-card-contents-for-ri="451" type="text/json">{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="452" href="https://www.academia.edu/Documents/in/Programming_Paradigms">Programming Paradigms</a>,&nbsp;<script data-card-contents-for-ri="452" type="text/json">{"id":452,"name":"Programming Paradigms","url":"https://www.academia.edu/Documents/in/Programming_Paradigms?f_ri=454","nofollow":false}</script><a class="InlineList-item-text" data-has-card-for-ri="454" href="https://www.academia.edu/Documents/in/Functional_Programming">Functional Programming</a><script data-card-contents-for-ri="454" type="text/json">{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false}</script></span></li><script>(function(){ if (true) { new Aedu.ResearchInterestListCard({ el: $('*[data-has-card-for-ri-list=3142608]'), work: {"id":3142608,"title":"A Perspective on Combining Different Programming Paradigms","created_at":"2013-03-28T09:01:12.675-07:00","url":"https://www.academia.edu/3142608/A_Perspective_on_Combining_Different_Programming_Paradigms?f_ri=454","dom_id":"work_3142608","summary":"The motivation and the basic issues for designing the programming system -ELa, that allowed combination of different programming paradigms is presented in the part one of this paper. In the ELa system distinct styles of programming (functional, logic and object-oriented) are enabled. The system is currently under development at the Institute of Mathematics in Novi Sad. In this paper we describe the problem definition of a multiprogramming system, and the current state of realization of that programming system. In the part two we will illustrate the ELa system that permit the combination of the functional, the logical and the object-oriented paradigm of programming.","downloadable_attachments":[{"id":31050786,"asset_id":3142608,"asset_type":"Work","always_allow_download":false}],"ordered_authors":[{"id":572739,"first_name":"Ljubomir","last_name":"Jerinic","domain_name":"novisaddepartmentofmathematicsandinformatics","page_name":"LjubomirJerinic","display_name":"Ljubomir Jerinic","profile_url":"https://novisaddepartmentofmathematicsandinformatics.academia.edu/LjubomirJerinic?f_ri=454","photo":"https://0.academia-photos.com/572739/204311/238412/s65_ljubomir.jerinic.jpg"}],"research_interests":[{"id":422,"name":"Computer Science","url":"https://www.academia.edu/Documents/in/Computer_Science?f_ri=454","nofollow":false},{"id":451,"name":"Programming Languages","url":"https://www.academia.edu/Documents/in/Programming_Languages?f_ri=454","nofollow":false},{"id":452,"name":"Programming Paradigms","url":"https://www.academia.edu/Documents/in/Programming_Paradigms?f_ri=454","nofollow":false},{"id":454,"name":"Functional Programming","url":"https://www.academia.edu/Documents/in/Functional_Programming?f_ri=454","nofollow":false},{"id":2529,"name":"Logic Programming","url":"https://www.academia.edu/Documents/in/Logic_Programming?f_ri=454"},{"id":52558,"name":"Prolog","url":"https://www.academia.edu/Documents/in/Prolog?f_ri=454"},{"id":55036,"name":"LISP","url":"https://www.academia.edu/Documents/in/LISP?f_ri=454"}]}, }) } })();</script></ul></li></ul></div></div></div><div class="u-taCenter Pagination"><ul class="pagination"><li class="next_page"><a href="/Documents/in/Functional_Programming?after=50%2C3142608" rel="next">Next</a></li><li class="last next"><a href="/Documents/in/Functional_Programming?page=last">Last &raquo;</a></li></ul></div></div><div class="hidden-xs hidden-sm"><div class="u-pl6x"><div style="width: 300px;"><div class="panel panel-flat u-mt7x"><div class="panel-heading u-p5x"><div class="u-tcGrayDark u-taCenter u-fw700 u-textUppercase">Related Topics</div></div><ul class="list-group"><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Type_Theory">Type Theory</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="456">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="456">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Programming_Languages">Programming Languages</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="451">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="451">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Program_Semantics">Program Semantics</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="455">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="455">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Formal_methods">Formal methods</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="14681">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="14681">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Haskell">Haskell</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="27504">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="27504">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Datawarehouse">Datawarehouse</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="104713">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="104713">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Programming_Paradigms">Programming Paradigms</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="452">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="452">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="422">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="422">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Lambda_Calculus">Lambda Calculus</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="18765">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="18765">Following</a></div></li><li class="list-group-item media_v2 u-mt0x u-p3x"><div class="media-body"><div class="u-tcGrayDarker u-fw700"><a class="u-tcGrayDarker" href="https://www.academia.edu/Documents/in/Theoretical_Computer_Science">Theoretical Computer Science</a></div></div><div class="media-right media-middle"><a class="u-tcGreen u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-follow-ri-id="17100">Follow</a><a class="u-tcGray u-textDecorationNone u-linkUnstyled u-fw500 hidden" data-unfollow-ri-id="17100">Following</a></div></li></ul></div></div></div></div></div></div><script>// MIT License // Copyright © 2011 Sebastian Tschan, https://blueimp.net // Permission is hereby granted, free of charge, to any person obtaining a copy of // this software and associated documentation files (the "Software"), to deal in // the Software without restriction, including without limitation the rights to // use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of // the Software, and to permit persons to whom the Software is furnished to do so, // subject to the following conditions: // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS // FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR // COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER // IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN // CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. !function(n){"use strict";function d(n,t){var r=(65535&n)+(65535&t);return(n>>16)+(t>>16)+(r>>16)<<16|65535&r}function f(n,t,r,e,o,u){return d((c=d(d(t,n),d(e,u)))<<(f=o)|c>>>32-f,r);var c,f}function l(n,t,r,e,o,u,c){return f(t&r|~t&e,n,t,o,u,c)}function v(n,t,r,e,o,u,c){return f(t&e|r&~e,n,t,o,u,c)}function g(n,t,r,e,o,u,c){return f(t^r^e,n,t,o,u,c)}function m(n,t,r,e,o,u,c){return f(r^(t|~e),n,t,o,u,c)}function i(n,t){var r,e,o,u;n[t>>5]|=128<<t%32,n[14+(t+64>>>9<<4)]=t;for(var c=1732584193,f=-271733879,i=-1732584194,a=271733878,h=0;h<n.length;h+=16)c=l(r=c,e=f,o=i,u=a,n[h],7,-680876936),a=l(a,c,f,i,n[h+1],12,-389564586),i=l(i,a,c,f,n[h+2],17,606105819),f=l(f,i,a,c,n[h+3],22,-1044525330),c=l(c,f,i,a,n[h+4],7,-176418897),a=l(a,c,f,i,n[h+5],12,1200080426),i=l(i,a,c,f,n[h+6],17,-1473231341),f=l(f,i,a,c,n[h+7],22,-45705983),c=l(c,f,i,a,n[h+8],7,1770035416),a=l(a,c,f,i,n[h+9],12,-1958414417),i=l(i,a,c,f,n[h+10],17,-42063),f=l(f,i,a,c,n[h+11],22,-1990404162),c=l(c,f,i,a,n[h+12],7,1804603682),a=l(a,c,f,i,n[h+13],12,-40341101),i=l(i,a,c,f,n[h+14],17,-1502002290),c=v(c,f=l(f,i,a,c,n[h+15],22,1236535329),i,a,n[h+1],5,-165796510),a=v(a,c,f,i,n[h+6],9,-1069501632),i=v(i,a,c,f,n[h+11],14,643717713),f=v(f,i,a,c,n[h],20,-373897302),c=v(c,f,i,a,n[h+5],5,-701558691),a=v(a,c,f,i,n[h+10],9,38016083),i=v(i,a,c,f,n[h+15],14,-660478335),f=v(f,i,a,c,n[h+4],20,-405537848),c=v(c,f,i,a,n[h+9],5,568446438),a=v(a,c,f,i,n[h+14],9,-1019803690),i=v(i,a,c,f,n[h+3],14,-187363961),f=v(f,i,a,c,n[h+8],20,1163531501),c=v(c,f,i,a,n[h+13],5,-1444681467),a=v(a,c,f,i,n[h+2],9,-51403784),i=v(i,a,c,f,n[h+7],14,1735328473),c=g(c,f=v(f,i,a,c,n[h+12],20,-1926607734),i,a,n[h+5],4,-378558),a=g(a,c,f,i,n[h+8],11,-2022574463),i=g(i,a,c,f,n[h+11],16,1839030562),f=g(f,i,a,c,n[h+14],23,-35309556),c=g(c,f,i,a,n[h+1],4,-1530992060),a=g(a,c,f,i,n[h+4],11,1272893353),i=g(i,a,c,f,n[h+7],16,-155497632),f=g(f,i,a,c,n[h+10],23,-1094730640),c=g(c,f,i,a,n[h+13],4,681279174),a=g(a,c,f,i,n[h],11,-358537222),i=g(i,a,c,f,n[h+3],16,-722521979),f=g(f,i,a,c,n[h+6],23,76029189),c=g(c,f,i,a,n[h+9],4,-640364487),a=g(a,c,f,i,n[h+12],11,-421815835),i=g(i,a,c,f,n[h+15],16,530742520),c=m(c,f=g(f,i,a,c,n[h+2],23,-995338651),i,a,n[h],6,-198630844),a=m(a,c,f,i,n[h+7],10,1126891415),i=m(i,a,c,f,n[h+14],15,-1416354905),f=m(f,i,a,c,n[h+5],21,-57434055),c=m(c,f,i,a,n[h+12],6,1700485571),a=m(a,c,f,i,n[h+3],10,-1894986606),i=m(i,a,c,f,n[h+10],15,-1051523),f=m(f,i,a,c,n[h+1],21,-2054922799),c=m(c,f,i,a,n[h+8],6,1873313359),a=m(a,c,f,i,n[h+15],10,-30611744),i=m(i,a,c,f,n[h+6],15,-1560198380),f=m(f,i,a,c,n[h+13],21,1309151649),c=m(c,f,i,a,n[h+4],6,-145523070),a=m(a,c,f,i,n[h+11],10,-1120210379),i=m(i,a,c,f,n[h+2],15,718787259),f=m(f,i,a,c,n[h+9],21,-343485551),c=d(c,r),f=d(f,e),i=d(i,o),a=d(a,u);return[c,f,i,a]}function a(n){for(var t="",r=32*n.length,e=0;e<r;e+=8)t+=String.fromCharCode(n[e>>5]>>>e%32&255);return t}function h(n){var t=[];for(t[(n.length>>2)-1]=void 0,e=0;e<t.length;e+=1)t[e]=0;for(var r=8*n.length,e=0;e<r;e+=8)t[e>>5]|=(255&n.charCodeAt(e/8))<<e%32;return t}function e(n){for(var t,r="0123456789abcdef",e="",o=0;o<n.length;o+=1)t=n.charCodeAt(o),e+=r.charAt(t>>>4&15)+r.charAt(15&t);return e}function r(n){return unescape(encodeURIComponent(n))}function o(n){return a(i(h(t=r(n)),8*t.length));var t}function u(n,t){return function(n,t){var r,e,o=h(n),u=[],c=[];for(u[15]=c[15]=void 0,16<o.length&&(o=i(o,8*n.length)),r=0;r<16;r+=1)u[r]=909522486^o[r],c[r]=1549556828^o[r];return e=i(u.concat(h(t)),512+8*t.length),a(i(c.concat(e),640))}(r(n),r(t))}function t(n,t,r){return t?r?u(t,n):e(u(t,n)):r?o(n):e(o(n))}"function"==typeof define&&define.amd?define(function(){return t}):"object"==typeof module&&module.exports?module.exports=t:n.md5=t}(this);</script><script>window.AbTest = (function() { return { 'ab_test': (uniqueId, test_name, buckets) => { let override = new URLSearchParams(window.location.search).get(`ab_test[${test_name}]`); if ( override ) { return override; } const bucketNames = buckets.map((bucket) => { return typeof bucket === 'string' ? bucket : Object.keys(bucket)[0]; }); const weights = buckets.map((bucket) => { return typeof bucket === 'string' ? 1 : Object.values(bucket)[0]; }); const total = weights.reduce((sum, weight) => sum + weight); const hash = md5(`${uniqueId}${test_name}`); const hashNum = parseInt(hash.slice(-12), 16); let bucketPoint = total * (hashNum % 100000) / 100000; const bucket = bucketNames.find((_, i) => { if (weights[i] > bucketPoint) { return true; } bucketPoint -= weights[i]; return false; }); return bucket; } }; })();</script><div data-auto_select="false" data-client_id="331998490334-rsn3chp12mbkiqhl6e7lu2q0mlbu0f1b" data-landing_url="https://www.academia.edu/Documents/in/Functional_Programming" data-login_uri="https://www.academia.edu/registrations/google_one_tap" data-moment_callback="onGoogleOneTapEvent" id="g_id_onload"></div><script>function onGoogleOneTapEvent(event) { var momentType = event.getMomentType(); var momentReason = null; if (event.isNotDisplayed()) { momentReason = event.getNotDisplayedReason(); } else if (event.isSkippedMoment()) { momentReason = event.getSkippedReason(); } else if (event.isDismissedMoment()) { momentReason = event.getDismissedReason(); } Aedu.arbitraryEvents.write('GoogleOneTapEvent', { moment_type: momentType, moment_reason: momentReason, }); }</script><script>(function() { var auvid = unescape( document.cookie .split(/; ?/) .find((s) => s.startsWith('auvid')) .substring(6)); var bucket = AbTest.ab_test(auvid, 'lo_ri_one_tap_google_sign_on', ['control', 'one_tap_google_sign_on']); if (bucket === 'control') return; var oneTapTag = document.createElement('script') oneTapTag.async = true oneTapTag.defer = true oneTapTag.src = 'https://accounts.google.com/gsi/client' document.body.appendChild(oneTapTag) })();</script></div></div></div> </div> <div class="bootstrap login"><div class="modal fade login-modal" id="login-modal"><div class="login-modal-dialog modal-dialog"><div class="modal-content"><div class="modal-header"><button class="close close" data-dismiss="modal" type="button"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button><h4 class="modal-title text-center"><strong>Log In</strong></h4></div><div class="modal-body"><div class="row"><div class="col-xs-10 col-xs-offset-1"><button class="btn btn-fb btn-lg btn-block btn-v-center-content" id="login-facebook-oauth-button"><svg style="float: left; width: 19px; line-height: 1em; margin-right: .3em;" aria-hidden="true" focusable="false" data-prefix="fab" data-icon="facebook-square" class="svg-inline--fa fa-facebook-square fa-w-14" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><path fill="currentColor" d="M400 32H48A48 48 0 0 0 0 80v352a48 48 0 0 0 48 48h137.25V327.69h-63V256h63v-54.64c0-62.15 37-96.48 93.67-96.48 27.14 0 55.52 4.84 55.52 4.84v61h-31.27c-30.81 0-40.42 19.12-40.42 38.73V256h68.78l-11 71.69h-57.78V480H400a48 48 0 0 0 48-48V80a48 48 0 0 0-48-48z"></path></svg><small><strong>Log in</strong> with <strong>Facebook</strong></small></button><br /><button class="btn btn-google btn-lg btn-block btn-v-center-content" id="login-google-oauth-button"><svg style="float: left; width: 22px; line-height: 1em; margin-right: .3em;" aria-hidden="true" focusable="false" data-prefix="fab" data-icon="google-plus" class="svg-inline--fa fa-google-plus fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256,8C119.1,8,8,119.1,8,256S119.1,504,256,504,504,392.9,504,256,392.9,8,256,8ZM185.3,380a124,124,0,0,1,0-248c31.3,0,60.1,11,83,32.3l-33.6,32.6c-13.2-12.9-31.3-19.1-49.4-19.1-42.9,0-77.2,35.5-77.2,78.1S142.3,334,185.3,334c32.6,0,64.9-19.1,70.1-53.3H185.3V238.1H302.2a109.2,109.2,0,0,1,1.9,20.7c0,70.8-47.5,121.2-118.8,121.2ZM415.5,273.8v35.5H380V273.8H344.5V238.3H380V202.8h35.5v35.5h35.2v35.5Z"></path></svg><small><strong>Log in</strong> with <strong>Google</strong></small></button><br /><style type="text/css">.sign-in-with-apple-button { width: 100%; height: 52px; border-radius: 3px; border: 1px solid black; cursor: pointer; }</style><script src="https://appleid.cdn-apple.com/appleauth/static/jsapi/appleid/1/en_US/appleid.auth.js" type="text/javascript"></script><div class="sign-in-with-apple-button" data-border="false" data-color="white" id="appleid-signin"><span &nbsp;&nbsp;="Sign Up with Apple" class="u-fs11"></span></div><script>AppleID.auth.init({ clientId: 'edu.academia.applesignon', scope: 'name email', redirectURI: 'https://www.academia.edu/sessions', state: "fa9ee36f449182b497eea373082ffc3e4677c365eaa7b25d201850d47bc54235", });</script><script>// Hacky way of checking if on fast loswp if (window.loswp == null) { (function() { const Google = window?.Aedu?.Auth?.OauthButton?.Login?.Google; const Facebook = window?.Aedu?.Auth?.OauthButton?.Login?.Facebook; if (Google) { new Google({ el: '#login-google-oauth-button', rememberMeCheckboxId: 'remember_me', track: null }); } if (Facebook) { new Facebook({ el: '#login-facebook-oauth-button', rememberMeCheckboxId: 'remember_me', track: null }); } })(); }</script></div></div></div><div class="modal-body"><div class="row"><div class="col-xs-10 col-xs-offset-1"><div class="hr-heading login-hr-heading"><span class="hr-heading-text">or</span></div></div></div></div><div class="modal-body"><div class="row"><div class="col-xs-10 col-xs-offset-1"><form class="js-login-form" action="https://www.academia.edu/sessions" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><input type="hidden" name="authenticity_token" value="i/kg/9dezSHb8/IMeEsSIuqe3xpLUR4DkKlKwEUx5Oo2rrBhJeymNOBTgj298b5QbW7Nrhvw+etLn6pZuDm4aw==" autocomplete="off" /><div class="form-group"><label class="control-label" for="login-modal-email-input" style="font-size: 14px;">Email</label><input class="form-control" id="login-modal-email-input" name="login" type="email" /></div><div class="form-group"><label class="control-label" for="login-modal-password-input" style="font-size: 14px;">Password</label><input class="form-control" id="login-modal-password-input" name="password" type="password" /></div><input type="hidden" name="post_login_redirect_url" id="post_login_redirect_url" value="https://www.academia.edu/Documents/in/Functional_Programming" autocomplete="off" /><div class="checkbox"><label><input type="checkbox" name="remember_me" id="remember_me" value="1" checked="checked" /><small style="font-size: 12px; margin-top: 2px; display: inline-block;">Remember me on this computer</small></label></div><br><input type="submit" name="commit" value="Log In" class="btn btn-primary btn-block btn-lg js-login-submit" data-disable-with="Log In" /></br></form><script>typeof window?.Aedu?.recaptchaManagedForm === 'function' && window.Aedu.recaptchaManagedForm( document.querySelector('.js-login-form'), document.querySelector('.js-login-submit') );</script><small style="font-size: 12px;"><br />or <a data-target="#login-modal-reset-password-container" data-toggle="collapse" href="javascript:void(0)">reset password</a></small><div class="collapse" id="login-modal-reset-password-container"><br /><div class="well margin-0x"><form class="js-password-reset-form" action="https://www.academia.edu/reset_password" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><input type="hidden" name="authenticity_token" value="t8VbC2o7d5jdvb5GwM+kbtMyyi81oUT1ym8/Fp6Yi1oKksuVmIkcjeYdzncFdQgcVMLYm2UAox0RWd+PY5DX2w==" autocomplete="off" /><p>Enter the email address you signed up with and we&#39;ll email you a reset link.</p><div class="form-group"><input class="form-control" name="email" type="email" /></div><script src="https://recaptcha.net/recaptcha/api.js" async defer></script> <script> var invisibleRecaptchaSubmit = function () { var closestForm = function (ele) { var curEle = ele.parentNode; while (curEle.nodeName !== 'FORM' && curEle.nodeName !== 'BODY'){ curEle = curEle.parentNode; } return curEle.nodeName === 'FORM' ? curEle : null }; var eles = document.getElementsByClassName('g-recaptcha'); if (eles.length > 0) { var form = closestForm(eles[0]); if (form) { form.submit(); } } }; </script> <input type="submit" data-sitekey="6Lf3KHUUAAAAACggoMpmGJdQDtiyrjVlvGJ6BbAj" data-callback="invisibleRecaptchaSubmit" class="g-recaptcha btn btn-primary btn-block" value="Email me a link" value=""/> </form></div></div><script> require.config({ waitSeconds: 90 })(["https://a.academia-assets.com/assets/collapse-45805421cf446ca5adf7aaa1935b08a3a8d1d9a6cc5d91a62a2a3a00b20b3e6a.js"], function() { // from javascript_helper.rb $("#login-modal-reset-password-container").on("shown.bs.collapse", function() { $(this).find("input[type=email]").focus(); }); }); </script> </div></div></div><div class="modal-footer"><div class="text-center"><small style="font-size: 12px;">Need an account?&nbsp;<a rel="nofollow" href="https://www.academia.edu/signup">Click here to sign up</a></small></div></div></div></div></div></div><script>// If we are on subdomain or non-bootstrapped page, redirect to login page instead of showing modal (function(){ if (typeof $ === 'undefined') return; var host = window.location.hostname; if ((host === $domain || host === "www."+$domain) && (typeof $().modal === 'function')) { $("#nav_log_in").click(function(e) { // Don't follow the link and open the modal e.preventDefault(); $("#login-modal").on('shown.bs.modal', function() { $(this).find("#login-modal-email-input").focus() }).modal('show'); }); } })()</script> <div class="bootstrap" id="footer"><div class="footer-content clearfix text-center padding-top-7x" style="width:100%;"><ul class="footer-links-secondary footer-links-wide list-inline margin-bottom-1x"><li><a href="https://www.academia.edu/about">About</a></li><li><a href="https://www.academia.edu/press">Press</a></li><li><a href="https://www.academia.edu/documents">Papers</a></li><li><a href="https://www.academia.edu/topics">Topics</a></li><li><a href="https://www.academia.edu/journals">Academia.edu Journals</a></li><li><a rel="nofollow" href="https://www.academia.edu/hiring"><svg style="width: 13px; height: 13px;" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="briefcase" class="svg-inline--fa fa-briefcase fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M320 336c0 8.84-7.16 16-16 16h-96c-8.84 0-16-7.16-16-16v-48H0v144c0 25.6 22.4 48 48 48h416c25.6 0 48-22.4 48-48V288H320v48zm144-208h-80V80c0-25.6-22.4-48-48-48H176c-25.6 0-48 22.4-48 48v48H48c-25.6 0-48 22.4-48 48v80h512v-80c0-25.6-22.4-48-48-48zm-144 0H192V96h128v32z"></path></svg>&nbsp;<strong>We're Hiring!</strong></a></li><li><a rel="nofollow" href="https://support.academia.edu/"><svg style="width: 12px; height: 12px;" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="question-circle" class="svg-inline--fa fa-question-circle fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M504 256c0 136.997-111.043 248-248 248S8 392.997 8 256C8 119.083 119.043 8 256 8s248 111.083 248 248zM262.655 90c-54.497 0-89.255 22.957-116.549 63.758-3.536 5.286-2.353 12.415 2.715 16.258l34.699 26.31c5.205 3.947 12.621 3.008 16.665-2.122 17.864-22.658 30.113-35.797 57.303-35.797 20.429 0 45.698 13.148 45.698 32.958 0 14.976-12.363 22.667-32.534 33.976C247.128 238.528 216 254.941 216 296v4c0 6.627 5.373 12 12 12h56c6.627 0 12-5.373 12-12v-1.333c0-28.462 83.186-29.647 83.186-106.667 0-58.002-60.165-102-116.531-102zM256 338c-25.365 0-46 20.635-46 46 0 25.364 20.635 46 46 46s46-20.636 46-46c0-25.365-20.635-46-46-46z"></path></svg>&nbsp;<strong>Help Center</strong></a></li></ul><ul class="footer-links-tertiary list-inline margin-bottom-1x"><li class="small">Find new research papers in:</li><li class="small"><a href="https://www.academia.edu/Documents/in/Physics">Physics</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Chemistry">Chemistry</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Biology">Biology</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Health_Sciences">Health Sciences</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Ecology">Ecology</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Earth_Sciences">Earth Sciences</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Cognitive_Science">Cognitive Science</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Mathematics">Mathematics</a></li><li class="small"><a href="https://www.academia.edu/Documents/in/Computer_Science">Computer Science</a></li></ul></div></div><div class="DesignSystem" id="credit" style="width:100%;"><ul class="u-pl0x footer-links-legal list-inline"><li><a rel="nofollow" href="https://www.academia.edu/terms">Terms</a></li><li><a rel="nofollow" href="https://www.academia.edu/privacy">Privacy</a></li><li><a rel="nofollow" href="https://www.academia.edu/copyright">Copyright</a></li><li>Academia &copy;2024</li></ul></div><script> //<![CDATA[ window.detect_gmtoffset = true; window.Academia && window.Academia.set_gmtoffset && Academia.set_gmtoffset('/gmtoffset'); //]]> </script> <div id='overlay_background'></div> <div id='bootstrap-modal-container' class='bootstrap'></div> <div id='ds-modal-container' class='bootstrap DesignSystem'></div> <div id='full-screen-modal'></div> </div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10