1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393 |
- Date: 1-Nov-82 14:56:40
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: APPEND
- Class: Request, deficiency
- In PSL the function APPEND now takes exactly 2 arguments.
- Could it be extended to take an arbitrary number. Probably
- 0 and 1 should also be legitimate numbers of arguments.
- What say?
- RESPONSE (Eric):
- Someday...
- Date: 30-Oct-82 18:49:42
- From: douglas <LANAM at HP-HULK>
- Subject: difference in apply betwen compiled and interpreted code.
- Class: Bug
- Dealing with apply to nexprs.:
- 18 lisp> (dn nexpr (a) (princ a) (terpri))
- NEXPR
- 19 lisp> (de calling-function (arg) (apply (function nexpr) (list arg))
- 19 lisp> )
- CALLING-FUNCTION
- 20 lisp> (calling-function 'a)
- A
- NIL
- 21 lisp> (calling-function '(a b))
- (A B)
- NIL
- 22 lisp> (compile '(calling-function))
- *** Function `CALLING-FUNCTION' has been redefined
- *** (CALLING-FUNCTION): base 257007, length 3 words
- NIL
- 23 lisp> (calling-function '(a b))
- ((A B))
- NIL
- 24 lisp> (calling-function 'a)
- (A)
- NIL
- 25 lisp> ^C
- --------
- Note: This bug does not exist on the vax. On the vax, this function
- runs the same interpretively and compiled. (The interpretive
- version on the 20 is the same definition as that on the vax). This
- use to work on the 20 until about 3 weeks ago.
- douglas
- RESPONSE (Eric):
- Fixed.
- Date: 27-Oct-82 17:16:07
- From: douglas <LANAM at HP-HULK>
- Subject: bug in psl - (tr get)
- Class: Bug
- Do (tr get) in psl, and you get an endless message:
- ***** Undefined function 'GET' called from compiled code
- over and over and over and over ...
- douglas
- RESPONSE (Eric):
- It should not let you (tr get). This could be fixed by
- changing DEBUG not to use REMD, and using some other method of
- avoiding the "foo redefined" message.
- Date: 22-Oct-82 09:38:48
- From: douglas <LANAM at HP-HULK>
- Subject: function timings.
- Class: Request
- Is it possible to make a version of psl that gives me a profile
- of all the lisp functions called and how much cpu time was spent
- in each. (I would assume since this involves some overhead, it
- should not be put in the standard psl). It would be preferable
- to have this on the vax.
- RESPONSE (Lanam):
- Doug has written a package to do this.
- Date: 18-Oct-82 12:29:47
- From: Alan Snyder <AS at HP-HULK>
- Subject: compiler bug
- Class: Compiler bug
- The compiler incorectly compiles the first clause of the COND in
- the function below. It compiles to return M2, rather than M1.
- (de foo (i1 i2)
- (let ((m1 (> i1 3))
- (m2 (> i2 4))
- )
- (cond ((not (eq m1 m2))
- m1)
- (t
- (+ i1 i2))
- )))
- RESPONSE (Eric):
- Fixed.
- Date: 15 Oct 1982 1131-PDT
- From: PERDUE at HP-HULK
- Subject: Make-String
- Class: Documentation bug
- The reference manual claims that the first argument to make-string
- is the upper limit for indices into the string, but in fact it
- is the number of characters in the string.
- RESPONSE ():
- Still extant.
- Date: 9-Oct-82 12:14:25
- From: douglas <LANAM at HP-HULK>
- Subject: Terminal interrupt (^B) error
- Class: Bug
- Similar to the one on the vax, on the 20 it also tries to
- reexecute previously typed in expressions.
- 8 lisp> (show 'thing)
- (thing (ako ($if-added (add-instance)) ($if-removed (remove-instance)))
- (instance ($value (request) (domain) (rule))
- ($if-added (add-ako))
- ($if-removed (remove-ako)))
- (self ($value (%(fname :frame)))))
- nil
- Time: 120 ms
- 9 lisp> *** Break in cleario at 43316
- Break loop
- ***** `show' is an unbound ID
- ***** Continuation requires a value for `show'
- Break loop
- thing
- Time: 1 ms
- 12 lisp break>>> ^C
- douglas
- RESPONSE ():
- Extant bug.
- Date: 7-Oct-82 15:17:52
- From: Alan Snyder <AS at HP-HULK>
- Subject: Interaction with EXEC location printout
- Class: Bug
- PSL is apparently using a reserved location in an improper way.
- The location ".JBSYM" (whatever that is) is supposed to point
- to a symbol table, but it apparently does not contain a proper
- value, since if you ask EXEC to print out locations in symbolic
- mode, the EXEC will blow up trying to do a symbol table lookup.
- Please fix this bug. (I have noticed NDDT get screwed up doing
- symbol table lookup also; perhaps this is the cause of that
- problem as well.) (This analysis is based on information provided
- by Tim Eldredge.)
- RESPONSE (Eric):
- BARE-PSL is now created with no symbol table at all. This
- prevents the EXEC from being blown up, but prevents debugging
- at times. The LINKER was trying to make a symbol table that
- wouldn't fit in memory with PSL.
- Date: 6-Oct-82 10:00:11
- From: FILMAN at HP-HULK
- Subject: Re: apply and list
- Class: Complaint, documentation deficiency
- If only EXPRs can be correctly applied, then you need to fix the
- documentation, where it says:
- "We permit macros and fexprs to be applied;"
- though the rest of the sentence presents a confusing disclaimer.
- In any case, why can FEXPRs and MACROS be correctly applied?
- Bob
- RESPONSE (Eric):
- They can be applied, but the result of Apply(FexprOrMacro, X) is
- the same as Apply(cdr getd FexprOrMacro, X). That means that
- the code is treated as though it were an EXPR. FEXPRs take a
- single argument, which is a list of unevaluated parameters. In
- the case of EXPRs, Apply(X, Y) is the same as Eval(cons(X, for
- each U in Y collect list('QUOTE, U))). This is not the case for
- FEXPRs or macros. In the case of macros, Apply can be used to
- perform macro expansion, i.e. (apply 'let '((let ((x y)) z)))
- returns ((lambda (x) z) y). In the case of FEXPRs, the list
- given to APPLY should have one element, which is the formal
- parameter to the function, e.g. if x=1, y=2 and z=3, then (apply
- 'list '((x y z))) returns (1 2 3). This type of thing is only
- dome in unusual situations, e.g. in Eval. It is generally not
- recommended that macros and fexprs be given to APPLY. The
- function which does what you want is EVAL.
- Date: 5-Oct-82 17:47:25
- From: FILMAN at HP-HULK
- Subject: Apply and list
- Class: Inquiry, deficiency
- Apply doesn't seem to work with list. I.e.:
- (apply 'list '(3 4 5)) ==> nil
- Is this a feature or a bug?
- Bob
- RESPONSE (Eric):
- Only EXPRs can be APPLYed correctly. LIST is a FEXPR.
- Date: 5 Oct 1982 1628-PDT
- From: Alan Snyder <AS at HP-HULK>
- Subject: Fast vector access
- Class: Compiler bug
- The PSL compiler still has a bug related to fast vector access:
- (de foo (v)
- (cons
- (+ (igetv v 0) (igetv v 1))
- (+ (igetv v 2) (igetv v 3))
- ))
- FOO
- (setf v [1 2 3 4])
- [1 2 3 4]
- (foo v)
- (3 . 7)
- (compile '(foo))
- *** (FOO): base 460253, length 6 words
- NIL
- (foo v)
- (0 . 7)
- (*ENTRY FOO EXPR 1)
- (*ALLOC 0)
- (*MOVE (MEMORY (REG 1) (WCONST 4)) (REG 2))
- (*WPLUS2 (REG 2) (MEMORY (REG 1) (WCONST 3)))
- (*MOVE (MEMORY (REG 1) (WCONST 1)) (REG 1))
- (*WPLUS2 (REG 1) (MEMORY (REG 1) (WCONST 2)))
- (*LINKE 0 CONS EXPR 2)
- RESPONSE (Eric):
- Fixed.
- Date: 5-Oct-82 15:11:06
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Documentation for REPEAT
- Class: Documentation bug
- Documentation for REPEAT is still incorrect in the latest
- PSL reference manual. The syntax is:
- Repeat ([S:form], E:form): nil
- RESPONSE ():
- Still extant.
- Date: 2-Oct-82 14:15:18
- From: douglas <LANAM at HP-HULK>
- Subject: Printing of error messages in compiler.
- Class: Suggestion
- Could the error messages that are longer than one line, be
- indented about 1 tab stop (5-8 spaces on the 2nd and succeeding
- lines so that they stand out and are easier to distinguish and
- read). An example would be
- *** Car in (car (foo 'foo1 (foo2 (foo3 'ffo4 (foo4 'xjks) 'sdjkl)
- (append (foo2 'x) (apply 'foo3 '4))))), not used, therefore not
- compiled.
- Due to macros, a number of these come up in my program.
- thanks,
- douglas
- RESPONSE (Cris):
- Low priority.
- Date: 2-Oct-82 12:48:03
- From: douglas <LANAM at HP-HULK>
- Subject: PRINC does too much.
- Class: Complaint
- Princ should not check the position of the line to determine
- whether or not the atom will fit. There should be a higher
- level function with that property. I thought princ should
- just print the atom. (or is there a lower level princ with
- out that check and possibly added carriage return not printed).
- douglas
- RESPONSE (Eric):
- Improvement is needed.
- Date: 2-Oct-82 12:46:12
- From: douglas <LANAM at HP-HULK>
- Subject: Please do not have psl come up in the editor.
- Class: Complaint
- This is not a desired start up position.
- 1) Reading logs of background jobs is very difficult, if you can get
- them to work at all.
- 2) Nmode does not work on a lot of terminals. (including the ever
- popular chipmunk.
- 3) The first thing I want to do in a lisp is dskin or fasl in my
- files, not edit a command to do this.
- 4) It is even difficult to run do's with this type of mode.
- (shell scripts).
- douglas
- RESPONSE (AS):
- PSL no longer comes up in the editor.
- Date: 1-Oct-82 11:23:53
- From: Alan Snyder <AS at HP-HULK>
- Subject: Printing of the escape character (!)
- Class: Complaint, deficiency
- The atom - prints as !- in Lisp mode.
- The atom + prints as !+ in Lisp mode.
- I believe this is a mistake.
- The printer should not insert unnecessary !'s.
- RESPONSE (Cris):
- Extant deficiency. I assume it will be fixed when someone
- shows he/she is being really hurt. It's a real crock in my
- personal opinion.
- Date: 30-Sep-82 11:09:01
- From: Alan Snyder <AS at HP-HULK>
- Subject: "<foo> already loaded" messages
- Class: Request, complaint
- I would like to reiterate a request made previously, I believe, by
- Doug to get rid of the "FOO already loaded" messages. If you
- feel strongly that some sort of warning is needed when people
- type (LOAD FOO) by hand, then I would suggest having LOAD return
- a string that would be printed by the Read-Eval-Print loop.
- I don't think there is any need to print these messages when
- the LOAD is contained in a file (either source or object) that
- is being read.
- RESPONSE (Eric):
- Fixed.
- Date: 29-Sep-82 11:34:48
- From: douglas <LANAM at HP-HULK>
- Subject: upon exit of psl (or interrupt with ^c).
- Class: Request
- Can the terminal keys be restored upon exit of psl-nmode
- (or interrupt with ^c)?
- dougla
- Add to things psl should do when ^c is typed:
- restore cntl-s. (This should be possible since emacs does this).
- douglas
- RESPONSE (Cris):
- Use C-X C-Z to exit NMODE; this problem does not occur when
- using ^C to exit PSL in its ordinary top loop.
- Date: 29-Sep-82 10:01:01
- From: douglas <LANAM at HP-HULK>
- Subject: Bug in nmode
- Class: Bug, deficiency
- If you type
- (expression)
- cntrl-] E.
- where the cntrl-] E is on the start of a new line,
- you get
- Exiting NMODE Lisp
- End of File read!,
- shouldn't it execute the last expression? Why should typing a carriage
- return before the cntrl-] E make a difference?
- douglas
- RESPONSE (Alan):
- If RETURN is typed before Lisp-E, NMODE is not supposed to read
- the previous expression. "End of File read!" is a reasonable
- response. "Exiting NMODE Lisp" is a confusing message, but not
- generated by NMODE.
- Date: 28-Sep-82 20:59:41
- From: douglas <LANAM at HP-HULK>
- Subject: Close all parenthsis to a particular level.
- Class: Request
- How about adding the ability of ] to close all parenthesis (as in franz,
- maclisp, ucilisp). It would be nice if it could stop at [ (as in franz,
- maclisp, ucilisp). But I realize you use [] for reading arrayes, thus
- maybe you could use {} for this type of bracketing. It would be nice
- to type } to close an expression instead of )))))) (and have to count
- them also, or wait for the editor to match them flipping the screen
- at 1200 baud (That process is a pain to go through in the editor).
- douglas
- RESPONSE (Cris):
- This is a relatively low priority now, I'd say.
- Date: 28-Sep-82 13:50:35
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: CompileTime and DskIn
- Class: Note
- (CompileTime (dskin "blah.sl")) has the effect of treating the
- contents of blah.sl as though they were textually embedded in
- the file with the CompileTime form: those forms are compiled.
- (CompileTime (load blah)) on the other hand causes the
- definitions in blah.b to be made available at compile time.
- Even if there is a text file blah.lap rather than binary
- blah.b, "load" seems to only load the definitions.
- If a file with (CompileTime (load foo)) in it is compiled, and
- if foo.lap (another source file) exists rather than foo.b, then
- the contents of foo.lap are effectively included in the source
- file I am trying to compile. This is a difference in behavior
- between compiled and non-compiled files.
- RESPONSE (Eric):
- Extant bug. This is the actual behavior. LOAD should always
- make the definitions available rather than compiling them. It
- is intended that DSKIN result in compiling the contents of the
- file referred to.
- Date: 28-Sep-82 11:19:30
- From: Alan Snyder <AS at HP-HULK>
- Subject: RETURN complaint
- Class: Compiler bug, complaint
- The PSL compiler now produces an error message if it
- encounters a RETURN with no arguments. This is fine.
- However, it still generates an invocation of "NIL".
- It should be possible to avoid generating garbage code
- when there are errors in the source.
- RESPONSE (Eric):
- A warning is now issued, but code to return NIL is generated
- and compilation continues.
- Date: 28-Sep-82 11:01:15
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Documentation update for CopyStringToFrom
- Class: Note
- Copy all characters from OLD into NEW. This operation is destructive.
- If the lengths of OLD and NEW differ, only the lesser number of
- characters is copied. If NEW is longer than OLD, the part not
- copied into is left unchanged.
- RESPONSE ():
- To be put into the manual.
- Date: 27-Sep-82 13:01:31
- From: Alan Snyder <AS at HP-HULK>
- Subject: Undefined functions
- Class: Complaint
- The error "Undefined function FOO called from compiled code" should
- (i.e., ought to be, for the user's sake) continuable.
- RESPONSE (Eric):
- Yes, that would be one benefit of loading a register with the
- number of arguments being passed to a function. The problem
- now is that continuation is performed by interpreting a LISP
- form, and it is not known how many arguments should be put in
- the list to be evaluated.
- Date: 27-Sep-82 11:27:15
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: EOF handling
- Class: Inquiry
- There appears to be no documentation in the reference manual
- concerning end of file handling, except for the case of READ.
- It appears to be undocumented for ChannelReadChar in particular.
- RESPONSE (Cris):
- See below, message from AS.
- Date: 27-Sep-82 04:33:32
- From: douglas <LANAM at HP-HULK>
- Subject: Speed of psl
- Class: Inquiry
- I am finding psl on the vax to be much slower than psl on the 20.
- Is this true? Is there any reason for this?
- (Things are noticiable a factor of 4 slower with equivalent
- load averages - but I did not do any timings).
- douglas
- RESPONSE ():
- ??
- Date: 27-Sep-82 09:02:49
- From: Alan Snyder <AS at HP-HULK>
- Subject: ChannelRead exception handling
- Class: Bug, documentation error
- The manual says that ChannelRead will catch $READ$ and return
- $EOF$. This is false; only Read does the catch.
- RESPONSE (Eric):
- None of the input functions use THROW any more. Thus no
- catches are performed, either. READ and company return the
- value of the variable $EOF$. Character at a time functions
- return (char EOF).
- Date: 24-Sep-82 14:20:40
- From: FILMAN at HP-HULK
- Subject: Page and section numbers
- Class: Suggestion, complaint
- I find confusing the fact that (in the PSL manual) page and section numbers
- are annotated the same way. When the index refers to 8.5, I don't know
- whether to rush off to section 8.5 (wrong) or page 8.5 . How about 8.5 for
- sections and 8-5 for pages, or something like that?
- Bob
- RESPONSE ():
- No response yet.
- Date: 27 Sep 1982 03:57:05-PDT
- From: douglas at HP-Hewey
- Subject: VAX version and prettyprint
- Class: VAX deficiency
- The module prettyprint does not exist on the vax
- (only the older module pretty).
- douglas
- RESPONSE (Eric):
- Fixed.
- Date: 23-Sep-82 15:26:13
- From: douglas <LANAM at HP-HULK>
- Subject: Backtrace.
- Class: Complain
- I found if you have
- (x (y (z a))) and you get an error evaluating (z a), you might find x and
- y on the backtrace stack even though you haven't executed it yet.
- Worse, if you trace y, y will never say it is entered but will be on
- the backtrace stack.
- douglas
- RESPONSE (Cris):
- Just what should appear on the backtrace stack and when is has
- been a matter of some debate. The phenomenon you are seeing
- occurs just in interpreted code.
- Date: 22-Sep-82 15:34:38
- From: douglas <LANAM at HP-HULK>
- Subject: DO loops
- Class: Bug
- do still returns t when there are no clauses after the test.
- the manual says it returns nil.
- RESPONSE (Eric):
- USEFUL has been rebuilt and presumably DO is correct.
- Date: 20-Sep-82 15:50:44
- From: douglas <LANAM at HP-HULK>
- Subject: Scanner
- Class: Bug
- 1.2xa is read as two tokens 1.2 and xa.
- 1.2ea gives a error message that the exponent is missing.
- same with 1.2x-a and 1.2e-a
- 1xa is two atoms 1 and xa.
- 1ea says that the exponent in the float is missing.
- douglas
- RESPONSE (Cris):
- Still extant.
- I consider this a relatively low priority. Common LISP has a
- well-defined and general scanner that we should implement
- eventually.
- Date: 20-Sep-82 11:07:38
- From: Alan Snyder <AS at HP-HULK>
- Subject: Excess right parens during compilation
- Class: Complaint
- When compiling a file, extra right parens should produce
- a warning message, as (in my case) they often are the result
- of a paren mismatch in the middle of a function definition.
- RESPONSE (Eric):
- The compiler now gives a warning message about this.
- Date: 20-Sep-82 10:43:11
- From: Alan Snyder <AS at HP-HULK>
- Subject: Functions to "replace" MAIN
- Class: Complaint
- I have found when writing functions designed to "replace" MAIN,
- that it is necessary for those functions to initialize the
- variables CurrentReadMacroIndicator* and CurrentScanTable*,
- otherwise after a SaveSystem when the program comes up, the
- scan table will be in a very strange state. I believe that
- this initialization should be performed by a "pre-main"
- procedure and that user-written "main" procedures should be
- spared these details, which tend to be system-dependent. Your
- source code for Main claims "Redefine this function to call
- whatever top loop is desired." I agree, except that "this
- function" should be one that does nothing except invoke the
- "standard" top loop.
- RESPONSE (Eric):
- Fixed.
- Date: 20-Sep-82 09:06:06
- From: PAULSON
- Subject: Read macros, the "BUG" function
- Class: Bug, deficiency
- Two problems:
- (1) Read macros are apparently not attached to read tables. Therefore
- a read macro for one read table may interfere with other read tables,
- including the system read table.
- (2) the function BUG bombs on directory access privileges.
- RESPONSE (Cris):
- Still extant. At some point the Common LISP input mechanisms
- should be implemented for PSL, solving the read macro problem.
- RESPONSE (Cris):
- The BUG function is still incorrect, but in a different way.
- Date: 18-Sep-82 15:54:10
- From: douglas <LANAM at HP-HULK>
- Subject: What does #<Code:0> mean?
- Class: Inquiry
- Why is this the return value of faslin?
- RESPONSE (Eric):
- No comment on this question. Faslin now returns NIL.
- Date: 17-Sep-82 11:40:31
- From: Alan Snyder <AS at HP-HULK>
- Subject: Use of fluid variables
- Class: Suggestion
- As part of the current effort to "clean up" PSL, I would like
- to suggest that an effort be made to reduce or eliminate the
- use of fluid variables as "optional" or "implied" arguments,
- by defining new functions with explicit arguments. For
- example, instead of having SpecialReadFunction*,
- SpecialWriteFunction*, and SpecialCloseFunction*, there
- should be an additional function OpenSpecial that takes four
- arguments, the filename, and the three functions. Another
- example is DumpFileName*: currently there is no way to save a
- PSL that does not have DumpFileName* bound to the name of the
- file it was dumped to. In the case of "system" programs, the
- default dump file should probably be "PSL.EXE" (i.e.,
- something that would write in the user's directory). There
- should be a variant of DumpLisp that takes the filename as an
- argument (and does NOT bind DumpFileName*). These are the
- two examples that come to mind, there may be others.
- RESPONSE (Eric):
- DumpLisp and SaveSystem now take arguments rather than using
- fluid variables. The problem with fluid variables and "open"
- is still extant.
- Date: 17-Sep-82 11:14:26
- From: Alan Snyder <AS at HP-HULK>
- Subject: message "($FLUID FOO) not compiled"
- Class: Compiler complaint, inquiry
- What does the message "($FLUID FOO) not compiled" mean? It sounds
- like the compiler has broken or something, although the program
- seems to work. Furthermore, why shouldn't it be compiled?
- Did the compiler run out of registers or something?
- Suggested fix: either fix the compiler to compile it, or change
- the error message to be more informative to naive users.
- RESPONSE (Eric):
- The message has been changed to "not used, therefore not compiled."
- Date: 17-Sep-82 09:54:27
- From: Alan Snyder <AS at HP-HULK>
- Subject: Endings of strings
- Class: Complaint
- If I forget the ending " on a string in a file, then I get one message
- "string continued over EOL" for every succeeding line in the file
- when the file is read in. There should be only one message given.
- Furthermore, if you believe that multi-line strings are bad (which I
- do), then you should probably generate an Error so that you don't
- read the remainder of the file in "reverse polarity" (in terms of
- what is inside vs. outside of string literals).
- (Manual note: I couldn't find anything in my manual that addresses
- the issue of multi-line string literals.)
- RESPONSE (Eric):
- There is (and has been) a flag to turn off the message. I
- don't plan to change this; some major users in fact depend
- heavily on multi-line string literals.
- Date: 17-Sep-82 02:46:17
- From: douglas <LANAM at HP-HULK>
- Subject: Proposal for inum/wnum arithmetic.
- Class: Suggestion
- I have thought of a reason for having both i and w commands.
- I think the w should be what both are now (just do the machine
- operation and dont worry about tags).
- But the i commands (iplus, ishift, ilor, etc.) could take their
- arguments make sure they are working on a full word (either
- go down the pointer to the integer object or move the immediate
- number into a full word (or register), play with it there, then
- if the number if to be passed to another procedure or used outside
- the context of the i num arithmetic functions, to be send to
- a function that would convert the word back to psl format.
- If small, convert to immediate format, if big, return the pointer
- to the object. This way I could have access to a full word
- on any machine, and be able to produce efficient open code,
- and not have to worry about the psl tag bits.
- The proposal would be if the system sees
- (ilor (ishift x n) (iland a b)), that x, n, a, and b would be converted
- first, then the operations done, and then the one result would be
- converted back. No type checking would be done (if it is an immediate
- number, the pointer would be followed and its location used, for
- efficiency.).
- How does this idea sound?
- RESPONSE (Eric):
- Not altogether right. Some of this would be more applicable to
- Franz LISP than it is to PSL.
- Date: 16 Sep 1982 1141-PDT
- From: Kendzierski at HP-HULK (Nancy)
- Subject: UNION clause of FOR
- Class: Documentation bug
- The manual states that "(UNION EXP) is similar to (COLLECT EXP), but
- only adds an element to the list if it is not equal to anything already
- there." However, I get the following results with COLLECT and UNION:
- -----------------------------
- (for (from i 1 4)
- (collect (cond ((= i 1) 1)
- ((= i 2) 1)
- ((= i 3) 3)
- ((= i 4) 3))
- ))
- Returned: (1 1 3 3)
- -----------------------------
- (for (from i 1 4)
- (union (cond ((= i 1) 1)
- ((= i 2) 1)
- ((= i 3) 3)
- ((= i 4) 3))
- ))
- Returned: 3
- -----------------------------
- RESPONSE (Cris):
- Actually, UNION is similar to JOIN rather than COLLECT. Thanks.
- (The manual is incorrect.)
- Date: 13 Sep 1982 1249-PDT
- From: Alan Snyder <AS at HP-HULK>
- Subject: Make-String
- Class: Bug in COMMON.SL
- Make-String in compiled form creates a string with 1 too many elements.
- RESPONSE (Eric):
- Fixed.
- Date: 10 Sep 1982 1606-PDT
- From: Alan Snyder <AS at HP-HULK>
- Subject: (APPLY x (LIST a b c...))
- Class: Bug, complaint
- The manual states that (APPLY x (LIST a b c...)) is compiled in
- such a way that the list (LIST a b c ...) is not actually
- constructed. This is a very useful optimization that I rely
- upon to make message passing efficient in my OBJECTS package.
- However, I was recently surprised to discover that the
- optimization is not performed if there are six or more elements
- in the list. I surmise that this is somehow related to the
- number of real (as opposed to virtual) registers in the DEC-20
- implementation, but don't see any reason why this should
- prevent the optimization from being carried out. What gives?
- RESPONSE (Eric)
- It's a nasty interaction between optimized compilation of LIST and
- optimized compilation of APPLY. I can fix it.
- RESPONSE (Eric):
- Fixed.
- Date: 10-Sep-82 10:49:18
- From: douglas <LANAM at HP-HULK>
- Subject: configuration of bps and heap on 20
- Class: Request
- Can the configuration of the above in psl be changed by moving approx.
- 20K-30K of heap space from heap to bps in bare-psl and psl?
- thanks,
- douglas
- Date: 10-Sep-82 10:22:02
- From: douglas <LANAM at HP-HULK>
- Subject: Breakfunction property
- Class: Documentation deficiency, documentation bug
- I found if you set the value of breakfunction on the propertylist of
- an atom, and type the atom at the break level, it will execute
- that function. This needs to be documented somewhere. Also the
- help file printed at the level should be able to be updated to
- reflect any changes the user may make. I am not sure I like having
- atoms automatically changed into functions at type in, but I do like
- being able to change the break system to take control characters
- instead of alphabetic characters.
- douglas
- Date: 10-Sep-82 09:07:36
- From: douglas <LANAM at HP-HULK>
- Subject: warnings by compiler.
- Class: Request
- When the compiler says something is declared fluid, could you
- include the function that caused this on the same line in the
- message. Due to the fast number of lisp systems, I have a hard
- time remembering whether yours does it before it prints the
- function name concerning it or after.
- douglas
- RESPONSE (Eric):
- Fixed.
- Date: 9-Sep-82 15:08:09
- From: douglas <LANAM at HP-HULK>
- Subject: psl space allocations on the vax
- Class: Request
- Could the psl on the vax be reconfigured so that there is 100K words of
- bps free at its startup (currently it is approx 46K words)?
- thanks,
- douglas
- Date: 9-Sep-82 14:32:52
- From: douglas <LANAM at HP-HULK>
- Subject: " . . . not compiled" message
- Class: Inquiry, complaint, request
- Does the following mean the whole phrase was not compiled or
- just the car was not compiled?
- *** (car (merge-comment
- (*i-put-datum (frame ($local type))
- (get-field-location 'nil ($local key1))
- '3 '(insert-frame (fname :frame)))
- 'finherit: 'continue))
- not compiled.
- If the first, it is very, very wrong since all of these functions are my
- own and do side effects (set property lists).
- If the second, the message should be changed to something like, return
- value of car is not used and thus car is not being compiled.
- douglas
- RESPONSE (Eric)
- It means just the CAR was not compiled. I'll see what I can do about
- the message.
- RESPONSE (Eric)
- Fixed the message.
- Date: 9-Sep-82 14:29:09
- From: douglas <LANAM at HP-HULK>
- Subject: Fluid and macro of the same name
- Class: Bug, deficiency
- One cannot use the same name for a fluid and a macro.
- Please fix this soon. It is a very annoying restriction that
- shouldn't exist.
- douglas
- RESPONSE (Eric)
- Fixed.
- Date: 3-Sep-82 13:06:38
- From: FILMAN at HP-HULK
- Subject: emode and []
- Class: EMODE deficiency, EMODE complaint
- The s-expression functions in emode don't seem to know about []'s.
- Since these are the default construction of defstruct, this is a serious
- deficiency.
- Bob
- Date: 3-Sep-82 11:57:28
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: STEP bug
- Class: Bug
- Try (step '(plus 3 4)). Step using ^N. The stepper breaks after
- a couple of steps.
- RESPONSE(Benson):
- Fixed.
- Date: 3-Sep-82 04:52:14
- From: douglas <LANAM at HP-HULK>
- Subject: can you change princ,
- Class: Request
- Can you change the printing of the following by princ, so that the open
- parens are on the beginning of the line, not the end? I think that
- this would be more pleasant to look at.
- Currently:
- (THING (WCHEM-CLASS (WCH) (WCHO (C-O-STRETCH-ALCOHOL) (O-H-DEFORMATION (
- (THING (WCHEM-CLASS (WCH) (WCHO (C-O-STRETCH-ALCOHOL) (O-H-DEFORMATION (
- O-H-STRETCH-FREE-OH-ALCOHOL) (O-H-STRETCH-INTRAMOLECULAR-H-BONDED-ALCOHOL) (
- C=O-STRETCH-OVERTONE) (C=O-STRETCH))))
- (Actually I tried to copy this off my terminal and one line got mixed up,
- but it still displays what is currently done.
- douglas
- RESPONSE(Benson):
- That's what PRETTYPRINT is for. It has been suggested that the top loop
- use PRETTYPRINT instead of PRINT. Any opinions?
- Date: 2-Sep-82 15:17:00
- From: Alan Snyder <AS at HP-HULK>
- Subject: Garbage collection trap request
- Class: Feature request
- I would like to have the GC starting and ending messages
- printed by specific functions that are invoked at the beginning
- and ending of each garbage collection. These functions should
- take as arguments all information that they use to construct an
- appropriate message. This change would allow me to alter the
- form of announcement without mucking with the GC itself. In
- particular, I don't want to have to make an altered copy of the
- GC code or access its private variables. I realize that the
- GC-start function would have to be written to not allocate any
- storage. I need this feature to display a GC announcement in
- NMODE.
- Date: 2-Sep-82 12:13:04
- From: douglas <LANAM at HP-HULK>
- Subject: flag *continuableerror
- Class: Documentation request
- I found a flag *continuableerror which should be documented in the manual.
- (It is very useful).
- Date: 2-Sep-82 11:45:35
- From: FILMAN at HP-HULK
- Subject: printing circular structures to depth
- Class: Feature request, notice, miscellaneous
- Unfortunately, PSL doesn't have a printlevel function (that
- prints a structure only to a certain depth). Nor does the
- circular printing function deal with circularity in vectors.
- I've written a (not deeply thought-out) depth-limited printing
- function of my own. Since PSL doesn't come with the most
- complete set of user utilities, how about a user-utility
- function area for such contributions?
- Bob
- Date: 2-Sep-82 11:05:43
- From: Alan Snyder <AS at HP-HULK>
- Subject: Char-UpCase and Char-DownCase
- Class: Bug
- Char-UpCase and Char-DownCase return NIL instead of their
- argument when no conversion is done.
- RESPONSE (Eric):
- Fixed.
- Date: 2-Sep-82 10:53:48
- From: FILMAN at HP-HULK
- Subject: atomic rules
- Class: Complaint
- In PSL, (atom x) == (not (pairp x)). Thus, vectors, code pointers
- strings, etc are all atoms.
- I know that this is documented. However, it is counter-intuitive
- (counter-intuitive == the other lisps I've played with don't do it this
- way). Not having read the fine print, I spent an afternoon discovering this
- fact.
- Bob
- RESPONSE (Eric)
- I agree it is confusing, but it conforms to all the other Lisps
- I know of! Perhaps you are confusing atoms with symbols (called
- litatoms in Interlisp?)
- Date: 2-Sep-82 10:43:26
- From: douglas <LANAM at HP-HULK>
- Subject: continuable break.
- Class: Inquiry, feature request
- Is there a function that would be (contbreak) ?
- Which is something to (break) as (conterror) is to (error)?
- douglas
- RESPONSE (Eric)
- That's really what ContinuableError is. It just puts you in
- a break loop where you can fix things.
- Date: 2-Sep-82 01:58:26
- From: douglas <LANAM at HP-HULK>
- Subject: break package and returning new values.
- Class: Inquiry
- I have read through the break package, and tried a few things, and can
- not find how I can do something that means
- (return value) where value is a lisp-expression to be evaluated and become
- the value of the call to break(or conterror), without calling
- the editor. I would like to be able to return a value or evaluate an
- expression that may not be similar to the expression that caused the
- error and return that value back from the break point (similar to
- what one can do in maclisp/franz/lisp machine lisp).
- How do I do this?
- douglas
- RESPONSE(Snyder):
- Just type the expression at the break handler, then type 'C' for
- "continue using last value".
- Date: 1-Sep-82 23:02:45
- From: douglas <LANAM at HP-HULK>
- Subject:
- Did someone change faslout? It use to echo input, but now it doesn't
- seem to.
- Can you change faslout back to echoing input that is just
- passed to the fasl file. I can not figure out easily when I
- finish typing an expression to faslout any more.
- Date: 1-Sep-82 22:58:44
- From: douglas <LANAM at HP-HULK>
- Subject: defn* and *defn
- Class: Documentation request
- what is defn* and *defn? and what is dfprint*? They are on page
- 19.3. They seem important yet are pretty much undocumented.
- What are they.
- RESPONSE (Eric)
- *DEFN and DFPRINT* are used by the top loop to allow processing
- other than evaluation. if *DEFN is non-NIL, DFPRINT* is applied to
- each form instead of being evaluated. This is the means by
- which FASLOUT and other functions work.
- Date: 1-Sep-82 22:55:56
- From: douglas <LANAM at HP-HULK>
- Subject: macros expanding to "bothtimes"
- Class: Complaint, bug, deficiency
- HP-PSL 3.0, 27-Aug-82
- 1 lisp> (bothtimes (setq x 2))
- 2
- 2 lisp> x
- 2
- 3 lisp> (dm x (y) `(bothtimes (setq . ,(cdr y)))
- 3 lisp> )
- X
- 4 lisp> (x z 4)
- 4
- 5 lisp> z
- 4
- 6 lisp> (faslout "junk")
- FASLOUT: (DSKIN files) or type in expressions
- When all done execute (FASLEND)
- T
- 7 lisp> (bothtimes (setq a 3))
- 3
- 8 lisp> (x b 4)
- 9 lisp> (faslend)
- *** Init code length is 2
- *** A declared fluid
- *** B declared fluid
- **FASL**INITCODE**NIL
- 10 lisp> a
- 3
- 11 lisp> b
- NIL
- 12 lisp> (quit)
- I do not think this is correct, the call to x on line 8 should be expanded
- by the compiler and then the system should notice that it is a bothtimes
- clause and should be executed at compile time and compiled. Instead it
- appears to be just compiled.
- The x is expanded (it is just not executed at compile time like it
- is suppose to be).
- Can you fix this soon?
- thanks,
- douglas
- Date: 1-Sep-82 17:00:41
- From: FILMAN at HP-HULK
- Subject: trace
- Class: Inquiry
- The function "trace" is defined but doesn't trace; nor is it documented in
- my version of the documentation.
- Bob
- Date: 1-Sep-82 12:08:02
- From: FILMAN at HP-HULK
- Subject: circular structure bugs
- Class: Bug, deficiency
- 1) Printx doesn't handle circular vector structures. Since defstruct
- makes vectors, this is a serious problem
- 2) Consider the following sequence:
- (setq bbb '[a b c d])
- (indx bbb 3) --> d
- (setindx bbb 3 bbb) --> prints the appropriate circular structure
- (indx bbb 3) --> an infinite structure
- (indx (indx bbb 3) 3) --> produces a push down overflow error
- (indx (indx (indx bbb 3) 3) 1) --> also produces a push down overflow error
- What gives?
- Bob
- Date: 1-Sep-82 12:01:03
- From: douglas <LANAM at HP-HULK>
- Subject: br does not work with macros.
- Class: Bug
- If you have a function x which is a macro. Say
- (dm x (y) (rplaca y 'princ))
- then do (br x) .
- Before the call to br,
- (x 'a) typed into the interpretor will execute the princ and return a.
- After the call to br,
- typeing (x 'a) to the interpretor will cause the expression
- (princ 'a) to be returned but not evaluated.
- douglas
- Date: 1-Sep-82 11:52:25
- From: douglas <LANAM at HP-HULK>
- Subject: compiletime
- Class: Bug
- do
- @psl
- (compiletime (setq a 1))
- a
- You will get that a has been set to 1. I do not think this is right.
- RESPONSE (Eric)
- (compiletime xxx) really means (eval-when (compile eval) xxx)
- in the current setup. I think (eval-when (compile) xxx) does
- what you want.
- Date: 31-Aug-82 11:14:18
- From: douglas <LANAM at HP-HULK>
- Subject: declaration of functions and variables.
- Class: Deficiency, feature request
- I think it is better to have a declaration statement to declare
- something as a fexpr or as a nexpr, if you wish to use it before
- defining it in compiled code.
- Currently the manual says to write a dummy version.
- But something like :
- (declare (*fexpr x) (*nexpr x)) would be better.
- It could also be used in compiling files that reference other
- files but that you don't wish to load everything in to compile it.
- Also,
- (fluid x) should not set x to nil.
- and there should be two property list names for function type and
- variable type, not one, you should be able to use a name as a
- global variable and a fexpr.
- douglas
- Date: 31-Aug-82 10:46:17
- From: douglas <LANAM at HP-HULK>
- Subject: feature in print.
- Class: Request
- It would be nice if print could know about readmacrochars that
- do as follows ^lisp-expression => (tag lisp-expression).
- An example is quote.
- Note: it should make sure the tagged list is of length 2 before
- doing the special print(at least in the case of quote).
- douglas
- Date: 30-Aug-82 15:34:57
- From: FILMAN at HP-HULK
- Subject: break and emode
- Class: Deficiency
- When trying to "q" from a break in emode, the cursor goes to the end of
- the second following line, not the next line. That is, if the screen is:
- (cursor shown by *)
- q*
- first line
- second line
- and you execute a meta-e, you get:
- q
- first line
- second line*
- not what you should get, which is:
- q
- first line*
- second line
- Bob
- Date: 30-Aug-82 13:38:40
- From: FILMAN at HP-HULK
- Subject: emode, breaks and "a"
- Class: Bug
- Giving an "a" from emode inside a break seems to confuse the emode
- page printing routines some.
- Bob
- Date: 30-Aug-82 10:34:10
- From: FILMAN at HP-HULK
- Subject: break window
- Class: Inquiry
- What happened to the break window?
- Bob
- RESPONSE(Perdue):
- It was removed because it behaved very poorly in various
- slightly "unusual" situations.
- Date: 28-Aug-82 03:57:53
- From: douglas <LANAM at HP-HULK>
- Subject: interrupt and dumpsave.
- Class: Deficiency
- If you do
- (load interrupt)
- (savesystem "xxx.exe")
- (quit)
- @xxx.exe
- The interrupts will not work in xxx.exe, but the system will think the
- file was already loaded.
- douglas
- RESPONSE (Eric)
- The function (INITIALIZEINTERRUPTS) is called when the module
- is loaded. It needs to be called in a fresh core image as well.
- It's not clear to me what the best way to ensure that is.
- Date: 28-Aug-82 03:56:46
- From: douglas <LANAM at HP-HULK>
- Subject: vector print length limit.
- Class: Feature request
- There should be a special variable (say *printlength) which is set to
- the maximum number of elements in a vector, list, (half-words vectors),
- which are printed out. The rest could be printed ... .
- This variable could be reset by the user (nil for no limit). But I
- think there should be a limit in the system (say 25-30?), often I
- get a strange error in compiled code which results in the endless
- printing of a vector.
- douglas
- Date: 27-Aug-82 16:09:05
- From: douglas <LANAM at HP-HULK>
- Subject: Printing "quote" expressions
- Class: Bug
- @psl
- 1 lisp> '(quote a b)
- 'A
- 2 lisp>
- douglas
- RESPONSE (Eric)
- Fixed (see BUG-FIX.LOG).
- Date: 27-Aug-82 14:55:33
- From: douglas <LANAM at HP-HULK>
- Subject: file function needed.
- Class: Feature request
- Is there a function which can tell me when a file was last written to
- the disk? I could use such a function.
- (I know this is machine/operating system dependent).
- douglas
- RESPONSE(Snyder):
- The file <HP-PSL.EMODE>DIRECTORY.SL has functions that almost
- do what you want. Take the part of FILE-DELETED-STATUS that
- does at GTJFN to get a JFN, then pass that to JFN-WRITE-DATE.
- RESPONSE(Perdue):
- It appears that we will be adopting the Common LISP file
- manipulation functions.
- Date: 26 Aug 1982 17:21-PDT (Thursday)
- From: Liu (?) at HP-PCD
- Subject: Function cells, function bindings, property lists
- Class: Inquiry, documentation deficiency
- We run psl on VAX/750 under UNIX.
- The problems are
- (1) I first defined a function "x". Then I initialized the property
- list of "x" by using "SetProp" which turned my function definition
- into "NIL".
- (2) I went on typing my function definition again. Then I looked at
- my property list. It has my function definition with some other
- goodies in it.
- I'll imagine the function cell and the property cell are two seperate
- entities. So, these side effects are unexpected and undesired.
- Following is a sample of the problems.
- 1 lisp> (de x (y) (car y))
- X
- 2 lisp> (pp x)
- (DE X (Y) (CAR Y))
- T
- 3 lisp> (setprop 'x '((color . red)))
- ((COLOR . RED))
- 4 lisp> (prop 'x)
- ((COLOR . RED))
- 5 lisp> (pp x)
- *** X has ill-formed definition.
- (DE X NIL)
- T
- 6 lisp> (de x (y) (car y))
- Do you really want to redefine the system function `X'?(Y or N)y
- *** Function `X' has been redefined
- X
- 7 lisp> (pp x)
- (DE X (Y) (CAR Y))
- T
- 8 lisp> (prop 'x)
- ((*LAMBDALINK LAMBDA (Y) (CAR Y)) USER (COLOR . RED))
- RESPONSE(Perdue):
- Thanks for the good observation. It turns out that the
- function cell in PSL always contains a machine instruction,
- so the lambda expression can't be stored there. PSL stores
- the lambda expression on the property list. I don't believe
- this fact is documented.
- RESPONSE (Eric)
- Calling SETPROP is inadvisable under almost any situation.
- Date: 26 Aug 1982 16:35-PDT (Thursday)
- From: Someone at HP-PCD
- Subject: "apply" function
- Class: Comment
- When the function "(apply 'plus '(1 2 3))" is entered, psl returns a line
- of the form
- #<Unknown:15602127320>
- rather than the result "6".
- RESPONSE(Perdue):
- PLUS is a MACRO, so you don't get what you expect as an answer.
- In general, applying a macro causes it to perform macro expansion
- but not to evaluate the expanded form. Probably applying a macro
- ought to either be an error. In some LISPs (apply fn arglist)
- is equivalent to (eval (cons fn arglist)) when fn is a macro, but
- these are not equivalent when fn is a normal function.
- Date: 26-Aug-82 15:27:19
- From: FILMAN at HP-HULK
- Subject: ***** Unexpected EOF while reading {99}
- Class: Inquiry
- I get the above message in a break, and all the ^q's I give it don't pop.
- Is there some sure way back to the top level?
- Bob
- RESPONSE(Perdue):
- Say "a" rather than "q" to get out. There is a menu that tends to come
- up these days, even when you don't want it. When you don't want it,
- use ^XO to get out of it. A couple of ^XOs and it will even disappear
- from the screen. We'll get rid of that menu altogether in a day or so.
- Date: 26-Aug-82 12:14:36
- From: FILMAN at HP-HULK
- Subject: closures
- Class: Comment, documentation deficiency
- I was pleased to see the documentation on closures on page 10.9
- of the psl manual. Unfortunately, this stuff is not
- implemented. Perhaps a better warning than "[??? Not yet
- connected to V3 ???]" could be associated with this material.
- Bob
- Date: 26-Aug-82 12:12:28
- From: FILMAN at HP-HULK
- Subject: defstruct
- Class: Documentation deficiency
- The defstruct documentation in the psl manual does not correspond to the
- implementation in psl. For example, defstructp doesn't exist. Chris
- assures me that the defstruct in psl is lisp machine defstruct. Perhaps
- the manual could be adjusted for this reality.
- Bob
- Date: 26-Aug-82 11:54:50
- From: FILMAN at HP-HULK
- Subject: emode and mm
- Class: Bug
- If you're in emode, and call mm, the exit from mm leaves emode confused.
- The various controll characters to the screen get printed. Doing an ^x^z
- and a continue psl fixes the problem.
- Bob
- Date: 26-Aug-82 11:23:54
- From: douglas <LANAM at HP-HULK>
- Subject: bugs in emode.
- Class: Bug, inquiry
- try the following:
- @psl
- 1 lisp> (emode)
- ^\e^L
- (that is type meta-e, cntl-l as the first input to emode).
- can ctrl-h work the same as ^b ? It does in emacs.
- douglas
- Date: 26-Aug-82 10:58:53
- From: FILMAN at HP-HULK
- Subject: Handling of macro expansion in the interpreter
- Class: Comment
- This is a subtle one, that most lisp's get wrong.
- In PSL, macros eat stack. For example, the sequence
- (setq x 1000)
- (dm awhile (l)(cond ((eval (cadr l)) (eval (caddr l)) l)
- (t nil)))
- (awhile (greaterp x 0) (setq x (sub1 x)))
- gets a stack overflow; it needn't. I believe that stanford 1.6 lisp
- does this right, while uci-lisp does it wrong.
- Bob
- Date: 26 Aug 1982 0857-PDT
- From: douglas <LANAM>
- Subject: you can do a funcall or apply on a code pointer.
- Class: Comment
- Date: 26-Aug-82 09:47:51
- From: douglas <LANAM at HP-HULK>
- Subject: why are there global variables which can be bound statically?
- Class: Inquiry, complaint
- what is really gained by this?
- RESPONSE(Perdue):
- It is thought that it is not meaningful to rebind certain
- global variables. The declaration is useful to some LISP
- implementations.
- message continues:
- I find it unreasonable that I can not do
- (let ((out* (open "junk" 'output))) (princ ....))))
- And if I can't do it this way, I have to use a catch to make sure that
- out* is bound correctly after the body of the let is executed.
- douglas
- RESPONSE(Perdue):
- The official PSL I/O system will probably be redone along the
- lines of Common LISP.
- Date: 26-Aug-82 09:22:25
- From: douglas <LANAM at HP-HULK>
- Subject: errors in manual.
- Class: Documentation bug
- Page 14.1:
- Under the function savesystem, is a spelling error.
- lispbannner!* should be lispbanner!*.
- On page 13.2 is the following :
- BREAKOUT!* (initially: NIL) global
- similar to BREAKOUT!*.
- Date: 25-Aug-82 13:50:26
- From: FILMAN at HP-HULK
- Subject: Page headings in the manual
- Class: Documentation
- The psl manual "swaps" the page and section numbers on left and right pages,
- but leaves the "PSL Manual" and section names unswapped. This is a bit
- confusing.
- RESPONSE(Kendzierski):
- This has been remedied in newer editions of the manual.
- Date: 25-Aug-82 13:40:16
- From: FILMAN at HP-HULK
- Subject: "bug" function
- Class: Bug
- The (bug) function gives an access failure (and dies in emode)
- The function defstructp is undefined.
- Date: 22-Aug-82 13:45:20
- From: PAULSON at HP-HULK
- Subject: SUBSTRING
- Class: Complaint, documentation deficiency
- In INTERLISP, (SUBSTRING STR N M) gives you the Nth through Mth
- elements of the string. Makes sense, right? And in ZLisp,
- (NSUBSTRING STR N M) gives you the (N+1)th through (M+1)th
- elements. Fine- ZLisp does zero-indexing. But in PSL,
- (SUBSTRING N M) gives you the (N+1)th through Mth elements.
- This does not make sense at all (and it isn't documented
- either.)
- RESPONSE (Eric)
- SUBSTRING in PSL is exactly the same as SUBSTRING in Zetalisp,
- except that the END argument is required, not optional, and the
- AREA argument is not used.
- Date: 20 Aug 1982 17:34:58-PDT
- From: Martin.Griss <Griss at UTAH-20>
- Subject: [Norman.kentvax at UDel-Relay: psl stray queries]
- Class: Miscellaneous
- this is a very initial bunch of psl queries/thoughts.
- it is also a test to see if i can get mail out of this vax
- & over to you lot.
- (a)i
- (a) on vax psl 'messages' and 'real output' get interleaved in what
- seems to be an assynchronous manner. at least i seem to get error
- messages all mixed in with the stuff i print, so the idiom
- print <my own messages>;
- error 'stop here;
- is not as helpful as I would like.
- RESPONSE (Eric)
- VAX Unix terminal output has been changed to be line buffered
- to speed it up. This should have the side benefit of removing
- the interleaving of stdout and errout.
- (b) I have tried to use
- rlisp <<here | tee logfile
- on echo;
- ....
- to get a copy of input & output of a set of standartd tests. the
- 'on echo;' seems not to be honoured? also the error recovery is
- a mess in this case because i go into lisp syntax & need to type
- special error-break-loop commands to escape it, and these are
- abominated unless i am in the error loop.
- (c) in ann error
- I wanted to see the value of fluid variables called a,b,c,d,...
- but of course some of these letters gave magic effects! i ended
- up with going (eval 'c) & similar nasties. yuk. also could the
- backtrace print values that fluids have on the stack, or could i
- have some similar easy way to see values of fluids that have been
- covered up by subsequent bindings. furthermore the mess one gets on
- going (backtrace) is a MESS and i find it hard to see the stuff that
- i want for all the muck that i dont.
- RESPONSE (Eric)
- Yes, backtrace and break are both weak.
- (d) try printing (expt 2 31). for me it gives an infinite string of -
- signs!!!!!!!
- RESPONSE (Eric)
- The problem is due to the fact that the most negative number in
- a 2's complement representation has no positive counterpart.
- The solution (courtesy of Alan Snyder) is to do the computations
- on numbers less than zero, so that positive numbers are negated
- before processing rather than negative numbers being negated.
- This will probably be fixed in PSL soon.
- (e) lack of bignums is mildly bothersome - for work with reduce I guess
- i will lash up a botched bignum package representing numbers as vectors
- (so they pass the atom test), cos i presume your proper version is in
- the pipeline but not ready yet.
- RESPONSE (Eric)
- Bignums do exist, as a loadable module. Do (LOAD BIG).
- (f) i looked for the followng functions without apparent success:
- random() generate random number
- timeofday() like date() but gives wallclock time
- (I wanted it to help generate a good seed for my own
- random number generator!)
- RESPONSE (Eric)
- (RANDOM) is obtained by LOADing MATHLIB. It uses (TIME) to
- generate its seed. If (TIME) is not documented it should be.
- (g) in rlisp, various things I expected to be errors were not
- trapped very hard, e.g. a missing ')' seemed to be continuable
- when i didn't expect/want it to. also "help help" failed by
- turning into (help 'help) internally, not (help help), and in a
- break look following an error (help <anything?>) complained
- about the help package not being loaded even though I had
- called it from rlisp.
- RESPONSE (Eric)
- There were bugs in the help system which I believe have been
- fixed. HELP HELP; is still parsed incorrectly in RLisp, and
- that probably will not be fixed.
- (h) i suspect that often while in an break loop i want further
- errors ignored rather than letting them push me further into
- deeper break loops. I might be happy to have a break level that
- eats simple 1-char commands to continue, quit, backtrace with
- one char that pushes me into a brand new read-eval-print loop.
- for rlisp I guess that should be an rlisp r-e-p loop?
- RESPONSE (Eric)
- It has been suggested that there be an absolute limit on depth
- of break loops. In any case it seems clear that the break loop
- mechanism should be redesigned; this is far from the only complaint.
- I will try to collect further notes to pass on as I think of things:
- just put these somewhere in your big pile of gripes!
- Was good to see you in Pittsburg. cheers. arthur
- Date: 19-Aug-82 10:07:31
- From: Alan Snyder <AS at HP-HULK>
- Subject: WNOT
- Class: CMACRO Bug
- The *WNOT CMACRO produces bad code when its argument is
- an integer constant. For example, the expression
- (WNot 7) produces (SETCM (REG 1) 7), which computes
- the complement of the contents of register 7.
- RESPONSE (Eric)
- This case should be caught and evaluated in the first pass of
- the compiler. The CMACRO should never be used.
- Date: 19-Aug-82 09:35:24
- From: LANAM at HP-HULK
- Subject: History list package
- Class: Deficiency
- When you do (hist), it tell you things like:
- 5 Inp: (HIST)
- Ans: NIL
- 6 Inp: Q
- Ans: NIL
- But it doesn't tell me that the Q on (inp 6) is a response to the break
- package, not the evaluation of the atom q. It also doesn't tell me that
- (ans 4) is nil because it never existed.{History is an undefined function}.
- RESPONSE (Eric)
- In general whenever a value is not returned by a function in the
- top loop, such as if an error occurs, NIL is put in the value
- position. Would it be preferable to put something else there,
- such as "Abnormal termination"?
- Date: 18-Aug-82 12:16:33
- From: Alan Snyder <AS at HP-HULK>
- Subject: Fast arithmetic and fast vector access
- Class: Compiler bug
- There is a serious PSL compiler bug relating
- to the interaction between fast arithmetic
- and fast vector access. In the following code,
- note that register 1 is clobbered by the MOVE
- instruction before it is used as an index
- register in the ADD instruction. (Possibly
- useful info: if the vector fetch is replaced
- by CAR, the compiler does the right thing,
- i.e., moves V to a free register before
- loading register 1.) PLEASE FIX THIS BUG!!!!
- ----------------------------------------------
- (CompileTime (Load Fast-Vector))
- (de test (v a)
- (WPlus2 (IGetV v 0) a))
- ----------------------------------------------
- (*ENTRY TEST EXPR 2)
- (*ALLOC 0)
- (*MOVE (REG 2) (REG 1))
- (*WPLUS2 (REG 1) (MEMORY (REG 1) (WCONST 1)))
- (*EXIT 0)
- ----------------------------------------------
- (MOVE (REG 1) (REG 2))
- (ADD (REG 1) (INDEXED (REG 1) 1))
- (POPJ (REG ST) 0)
- ----------------------------------------------
- RESPONSE (Eric)
- I believe this bug has been fixed in the latest release from Utah.
- Date: 18-Aug-82 09:52:47
- From: Alan Snyder <AS at HP-HULK>
- Subject: PRINTX
- Class: Deficiency
- PRINTX apparently does not handle shared structures involving
- Vectors.
- RESPONSE (Eric)
- True. Don Morrison wrote a quick and dirty circular structure
- printer GRAPH-TO-TREE, obtained by LOADing GRAPH-TREE, which
- correctly handles circular vectors.
- Date: 15-Aug-82 12:36:13
- From: LANAM at HP-HULK
- Subject: bug in macroexpand.
- HP-PSL 3.0, 12-Aug-82
- 1 lisp> (macroexpand '(setq a b c d))
- (SETQ A B)
- The result should have been '(setq a b c d)).
- RESPONSE (Perdue):
- Right on expanding SETQ. There may be an associated compiler bug, too.
- RESPONSE (Eric)
- I fixed the source for MACROEXPAND. The compiler does its own
- processing and is not affected.
- Date: 14-Aug-82 18:59:24
- From: LANAM at HP-HULK
- Subject: what does ($fluid :value) not compiled mean?
- Class: Inquiry
- I got this between two functions I compiled, but there was no code between
- the two function (and the declaration was pages earlier).
- thanks,
- douglas
- RESPONSE (Eric)
- "*** FOO not compiled" from the compiler means that FOO has no side
- effects and is used in a place where no value is required. The
- compiler does not issue code for such expressions.
- Date: 14-Aug-82 18:33:00
- From: LANAM at HP-HULK
- Subject: Compiling variables in the CAR position
- Class: Inquiry, complaint
- HP-PSL 3.0, 12-Aug-82
- 1 lisp> (setq *comp t)
- T
- 2 lisp> (defun a (b) (b b))
- *** Functional form converted to APPLY (B B)
- *** (A): base 412016, length 3 words
- A
- Why is it, if the function and argument have the same name, it
- gives me this message, but if I change either the name of the
- function or the argument, it doesn't give me this message?
- I don't think this message should pop up.
- Even if the function b was declared already.
- (defun a (b) (B b)) causes the system to think that b is a variable bound
- to a function.
- I think this is wrong. If I had wanted that I would have done
- (apply b (list b)) instead of (b b).
- RESPONSE (Perdue):
- (defun a (b) (b b)) is compiled heuristically. The compiler guesses
- whether the call on b is directly a function call or whether "b" is
- used as a function-valued variable. On the basis of local context it
- guesses b is a variable in function position. I'm sure it will be
- a low priority for fixing, since it is easily worked around.
- RESPONSE (Eric)
- This handling of variables in the function position goes against
- the accepted practice in recent Lisp systems. I made the decision
- to do it that way, but have gotten only complaints about it.
- (Of course those who like it that way probably wouldn't say
- anything about it unless it went away!) On reflection and further
- use I believe it should not have been done this way. It is also
- inconsistent with the Common Lisp definition. Should it be changed
- now?
- Date: 14-Aug-82 14:57:28
- From: LANAM at HP-HULK
- Subject: (reset) should end a (faslout)
- If i do (faslout), get an error, and do (reset),
- I do not think the system should be in fasl mode any more.
- I think if I wanted to continue the (faslout), or save it,
- I would use the continue option of the break package, and
- not do (reset).
- douglas
- RESPONSE (Eric)
- FASLOUT sets a global variable and returns, rather than binding
- a fluid and doing the processing within that binding. One
- solution is to write a COMPILE-FILE function which binds *DEFN
- so that popping out will abandon processing.
- Date: 12-Aug-82 16:36:41
- From: LANAM at HP-HULK
- Subject: READ
- Class: Bug
- do (let () (setq y (readch)) (unreadchar y) (read))word
- the system will return
- wORD
- note: that read normally changes all the characters in its word to
- upper case.
- But if the character was sent back to the input stream from unreadchar,
- its initial case remains and the atom that read interns has its first
- character in lower case if it was typed that way.
- The above should have returned WORD.
- The above is with *raise = t.
- douglas
- RESPONSE (Eric)
- This wsa due to a bug in READCH and has been fixed. By the way,
- UNREADCHAR is not the correct dual to READCH (in fact it is not
- currently defined). UNREADCHAR is the dual of READCHAR, which
- returns a character (integer) instead of an ID.
- Date: 12-Aug-82 16:27:30
- From: LANAM at HP-HULK
- Subject: search in emode
- Class: Proposal
- I looked at the source to search.red in pe: and found that it does
- a very dumb search algorithm.
- The search algorithm should be replaced with the kmp algorithm
- which can be found in most data structures/algorithm books.
- I have a version running in lisp (but not fully compatible with
- emode functions) which I can send. The whole algorithm is
- about 20 lines of code.
- I also have a version in pascal which runs on my 9836 ( i debugged
- it on there when the hulk was down and moved it over.
- ----
- I am including the whole algorithm in lisp slightly commented.
- This version to work with emode needs to convert some or the list
- of characters and vectors of character to vectors of ints, and
- needs to ignore case (this version does not ignore case).
- This code has been checked and works. I am using a variation of
- it in my program for my search through the history table.
- It runs much faster than the algorithm currently used in emode.
- If you wish to install it, I can help in debugging this part of
- the code and checking it works, if you can get someone else
- to interface it to the reset of emode and set up the correct
- accessing of emode data structures.
- douglas
- -----
- %%
- %% Implemenation of Knuth_Morris_Pratt algorithm.
- %%
- %%
- %% p: input-pattern format vector of characters:
- %% '[a b c].
- %%
- %% output failure link vector to be used by emode_kmp_scan.
- %%
- (defun emode_kmp_flowchart_construction (p)
- (let ((m (size p)))
- (let ((*flink (mkvect (iplus2 1 m))))
- (iputv *flink 0 -1)
- (do ((i 1 (+ 1 i)))
- ((> i m) *flink)
- (do ((j (igetv *flink (- i 1)) (igetv *flink j)))
- ((or (eq j -1) (eq (igetv p j) (igetv p (- i 1))))
- (iputv *flink i (+ j 1))))))))
- %%
- %% p : input _string in vector format '[ a b c]
- %% m : upper bound of vector p (answer for above is 2).
- %% s : line of characters to be searched
- %% format list of characters: '(A b c d e . ..)
- %% *flink : failure link vector from emode_kmp_flowchart_construction.
- %%
- %% returns t if succeed, nil if not found.
- %%
- (defun emode_kmp_scan (p m s *flink)
- (and s
- (prog (j)
- (setq j 0)
- %%
- %% if next character does not match use failure links
- %% to back up and try again.
- %%
- loop (cond ((and (neq j -1) (neq (igetv p j) (car s)))
- (setq j (igetv *flink j)) (go loop)))
- %%
- %% if you have matched the entire pattern => succeed.
- %%
- (and (= j m) (return t))
- (or (setq j (+ 1 j) s (cdr s))
- %%
- %% move pointer in line,
- %%
- %% if no more line, fail.
- (return nil))
- (go loop))))
- Date: 12-Aug-82 11:06:18
- From: LANAM at HP-HULK
- Subject: GO inside AND
- Class: Compiler deficiency
- The Psl compiler
- does not allow a go inside an and clause inside a prog.
- ex:
- 10 lisp> (defun xx () (prog () loop (and (go loop))))
- ***** (GO LOOP) INVALID GO
- XX
- Thus causing me to have to say
- (cond (expression (go loop))) inside a prog
- when i want to say (and should be allowed to say):
- (and expression (go loop))
- douglas
- RESPONSE (Eric)
- This use of GO within AND is in violation of Standard Lisp.
- There isn't a good reason for this restriction and it should
- probably be removed from the compiler. In the meantime, if you
- use (WHEN foo (GO xx)) instead of (AND foo (GO xx)), everything
- should be fine. Use of OR in this fashion should be replaced by
- (UNLESS foo (GO xx)).
- Date: 11 Aug 1982 0932-PDT
- From: JOHNSON at HP-HULK
- Subject: Documentation Bug
- Class: Documentation Bug
- Section 5.1, paragraph 2 of <HP-PSL>HP-PSL.R contains the meaningless
- sentence: "Some of the <PSL> directories have no corresponding <PSL>
- directory."
- Date: 10 Aug 1982 1620-PDT
- From: Kendzierski at HP-HULK (Nancy)
- Subject: REPEAT
- Class: Horrid documentation bug
- The manual states that the REPEAT construct (section 9.3; page 9.7)
- is repeated until the value of the expression is NIL.
- RESPONSE (Perdue):
- Actually, Nancy had quite a bit more to say, but the real problem
- is that the documentation for the LISP REPEAT is totally
- scrambled, though the RLISP documentation looks OK. Syntax for
- repeat is really:
- (REPEAT <stmt> . . . <condition>)
- The statements are executed until the condition becomes true.
- The condition is really and end-test.
- Date: 10-Aug-82 13:28:27
- From: LANAM at HP-HULK
- Subject: word size
- Class: Inquiry
- Is there a function which returns the word size (number of bits) that
- logical operations operate on, built into psl?
- Date: 10-Aug-82 13:27:26
- From: LANAM at HP-HULK
- Subject: bug in print and lshift.
- Class: Bug
- type the following to the top level of the psl interpreter on the 20.
- (lshift 2 34)
- You get an endless unstoppable output of hyphens.
- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------...
- douglas
- RESPONSE (Eric)
- See response above to Norman.
- Date: 10-Aug-82 12:01:02
- From: LANAM at HP-HULK
- Subject: addresses
- Class: Inquiry
- What function returns the address of a lisp object?
- What function takes an address (from above function) or some other int,
- and gives me the lisp object at that address?
- RESPONSE (Eric)
- The first operation can be done but is probably not advisable.
- There is no defined function to do it from the interpreter, but
- the macro INF can be used in compiled code by LOADing SYSLISP.
- The second probably cannot be done, since the tag defines the type
- of an object and is not recoverable from the address. (This may
- not be completely true, you can sometimes tell from the contents
- of the object). Perhaps you could explain why you want to do this,
- there may be some more appropriate operation.
- Date: 10-Aug-82 11:40:02
- From: LANAM at HP-HULK
- Subject: documentation of compiled in line functions.
- Class: Suggestion
- They should be mentioned where their non compiled in line
- counterpart is.
- RESPONSE (Perdue):
- The fast arithmetic procedures that are compiled in line turn out
- to be described in the section on SYSLISP, section 21.4 in
- particular.
- Date: 10-Aug-82 11:37:05
- From: LANAM at HP-HULK
- Subject: (maxint) => ???
- Class: Inquiry
- Is there a function that return maxint and minint?
- also maxfloat, and minfloat?
- RESPONSE (Eric)
- Currently none. The Common Lisp definition says these are
- constant global variables (not exactly the same names, though).
- Date: 10-Aug-82 10:31:26
- From: LANAM at HP-HULK
- Subject: bug in time with garbage collection
- Class: Bug, deficiency
- When *time = t,
- the system should report cpu and garbage collection time seperately,
- not as one total number.
- Cpu time: 496 ms. GC time: 2500 ms.
- not
- Time: 2996 ms.
- The current timing given is misleading.
- douglas
- RESPONSE (Eric)
- Currently GC time is not saved. It would be pretty simple
- to do, just a matter of choosing how.
- Date: 9-Aug-82 11:03:03
- From: LANAM at HP-HULK
- Subject: Fast vector access
- Class: Bug
- I got the message:
- (memory ($local y) (wconst 19)) not compiled
- when I did:
- (defun xx (y) (do ((i 100 (sub1 i))) (eq i 0)) (igetv y 18)))
- RESPONSE (Perdue):
- Looks like a bug. Please use WGETV rather than igetv until we
- find out that igetv is for public consumption. I think they will
- do the same thing anyway.
- RESPONSE (Eric)
- This is not a bug! See the comment above on "*** FOO not
- compiled". If you want to have this compiled, you must do
- something with a side effect inside the loop.
- Date: 9-Aug-82 09:08:11
- From: LANAM at HP-HULK
- Subject: fluid
- Class: Inquiry, documentation deficiency
- (fluid '(abc)) will set the value of abc to nil.
- Why? The documentation does not say that such a thing is done.
- It should leave abc as an unbound variable.
- douglas
- RESPONSE (Eric)
- This is in conformance with the Standard Lisp report. If it is
- not described in the PSL manual it should be.
- Date: 29 Jul 1982 17:39:24-PDT
- From: Tony Hearn <HEARN at RAND-AI>
- Subject: Strange REDUCE bug
- Class: Bug
- If you do in REDUCE on the VAX:
- x := x+1;
- x;
- You SHOULD, I believe, get a "push down stack overflow" error. Instead,
- you go off into mystery (system seems to hang) and finally get an "illegal
- instruction" message and a core dump.
- RESPONSE (Eric)
- Stack overflow on VAX Unix is not handled well by the operating
- system. Franz Lisp has the same problem. Perhaps 4.2BSD will
- do a better job.
- Date: 26 Jul 1982 17:35:58-PDT
- from: lseward at RAND-UNIX
- Subject: PSL distribution files
- Class: News
- I am listing off sources and have been straightening out the vax-comp and
- vax-interp files. Suggestion: have subdirectories src, build, and bin
- and put the appropriate things in them. Otherwise the statement (in the
- documentation) "This directories contains sources for ..." is very
- misleading.
- larry
- Date: 13 Jul 1982 12:23:31-PDT
- From: Galway@UTAH-20 at HP-Speech
- Subject: break loop "feature"
- Class: Comment, proposal
- The current break handler inherits the reader, evaluator, and printer from
- whatever the current TopLoop uses (if TopLoop is being used). I suspect
- that this is a mistake, since it makes it awkward to deal with special
- "exotic" top loops. It's already somewhat confusing that depending upon
- the circumstances you will either get a LISP reader, or and Rlisp reader.
- Think about how wonderful it would be if your reader only returned vectors
- to be "evaluated" by adding them up (say, for a desk calculator or
- something).
- I suggest that instead we only have one, or maybe two, break loops.
- Default would use LISP's READ/EVAL/PRINT. And perhaps it should notice
- when Rlisp is in effect, and use its READ/EVAL/PRINT in that case.
- Comments?
- RESPONSE (Eric)
- Definitely. The break loop is all wrong. Lets redo it.
- Date: 25 Jun 1982 2106-PDT
- From: LANAM
- Subject: package proprosal
- Class: Proposal
- I would like the system to remember the package definition name of a
- variable and functions in .b files so that I dont' get the system
- binding files which were compiled in package a but loaded in package
- b refering to package b functions when a package is not specified.
- Just binding everything to global would not work since then it would
- be a nuisance to have to always write out a local package name in a
- file on every function and variable.
- (This is a proposal to send along with any bug reports to martin).
- douglas
- RESPONSE (Eric)
- Packages are not fully integrated into the system. This will
- probably have to wait for a redesign of PSL to include packages
- in the kernel.
- Date: 6-Aug-82 14:09:27
- From: LANAM at HP-HULK
- Subject: bug with *time
- Class: Bug
- If the first thing you say to psl is
- (setq *time t)
- you get back
- Time: 211392 ms (or some such large number).
- RESPONSE (Eric)
- True.
- Date: 4 Aug 1982 01:36:20-PDT
- From: daemon at HP-Speech
- From: Tony Hearn <HEARN at RAND-AI>
- Subject: PSL cannot read bignums correctly
- The source for the bigfloat package contains bignums. It does not seem
- to read or maybe compile correctly.
- Can PSL currently read bignums?
- RESPONSE (Griss):
- PSL can read bignums with BIG loaded. Without it, bignums will
- not be read correctly. It is probably true that bignum
- constants cannot be compiled in either case.
- RESPONSE (Eric)
- This has been fixed completely.
- Date: 27 Jul 1982 16:18:52-PDT
- From: Martin.Griss <Griss at UTAH-20>
- Subject: ExitTopLoop
- Class: Proposal
- Id like to add and ExitTopLoop comand,
- eg !$exitTopLoop!$ as distinguided atom? Or some such,
- perhaps have on property list of atom and action function,
- ala Break, perhaps using toploop name as key?
- GET(InputValue,ModuleName,...).
- Date: 27 Jul 1982 1058-PDT
- From: BATALI
- Subject: Easy file reading
- Class: Complaint
- There ought to be an expr to read a file.
- The only way to do this now is something like:
- (eval `(dskin ,filename))
- I see no reason why dskin should not be an nexpr: virtually
- all present uses of it use string arguments so it wouldn't
- matter.
- L&C,
- John
- RESPONSE (Eric)
- Definitely. Let's make DSKIN an EXPR with ONE argument, since
- that's all it's used for 99.99...% of the time. Incompatible
- with some existing code?
- Date: 27 Jul 1982 16:19:23-PDT
- From: Martin.Griss <Griss at UTAH-20>
- Subject: VAX QUIT
- Class: Proposal, response
- I think QUIT should have an associated function, FullStop or some such.
- (Or have 2 low level functions, QuitAndKeep, QuitAndKill), and let
- system admin choose which QUIT is which.
- Date: 25 Jun 1982 1948-PDT
- From: LANAM
- Subject: VAX cntrl-d
- Class: Bug
- Type cntrl-d (eof) as the first character, and the system will go into
- an endless loop.
- douglas
- Date: 26 Jul 1982 17:36:09-PDT
- From: Eric Benson <BENSON at UTAH-20>
- Subject: VAX QUIT
- Class: Response, comment
- Perhaps it's a misfeature. The alternative is to make (QUIT) irrevocable.
- Reading EOF will cause the PSL process to terminate, which allows the use
- of shell scripts and/or I/O redirection. If you want to do that from the
- terminal, type one or more ^Ds.
- Date: 26 Jul 1982 17:35:51-PDT
- Subject:VAX QUIT
- From: hearn at RAND-RELAY
- Class: Comment, complaint
- When you do (quit) to psl, you get the message "stopped", and you have
- a job sitting there. My UNIX guys say this is a bug, and should be fixed.
- I know that you can restart the stopped job, but apart from that facility,
- the stopped job does get in the way every so often. Furthermore, when I
- try to do "time preduce", I can't get the timing info out.
- RESPONSE (Eric)
- The function (EXITLISP) has been added to the VAX Unix version
- and should be in the next edition of the manual. It calls the
- Unix subroutine exit(), which will kill off the process as you wish.
- Date: 29 Jul 1982 1412-PDT
- From: BATALI
- Subject: Use of variables w. same name as functions
- Class: Bug, comment, complaint
- The function:
- (defun or-list? (list predicate)
- (cond ((null list) nil)
- ((funcall predicate (car list)) t)
- (t (or-list? (cdr list) predicate))))
- Is T if any of the predicate applied to any of its elements is T.
- It works fine interpreted, but the compiler goes into an infinite loop
- printing:
- Functional form converted to (APPLY PREDICATE (LIST (CAR LIST)))
- Not a pretty sight.
- Ghastly,
- John
- RESPONSE (Perdue):
- This bug is due to use of "list" as both a local variable and a
- function, and it occurs even though "list" is not explicitly used
- as a function here at all. The problem is inherent in any LISP
- that allows variables in the "function position" and has both a
- variable and function binding cell for atoms.
- RESPONSE (Eric)
- See previous comment.
- Date: 6-Aug-82 10:31:49
- From: LANAM at HP-HULK
- Subject: structure of variable historylist*
- Class: Inquiry, complaint
- why is the car of history an endless structure:
- (historylist* (historylist* (historylist* (historylist* ....
- the (caddr historylist*) is also this strange structure.
- isn't there a simplier structure that could be used?
- douglas
- RESPONSE (Eric)
- This only happens when you try to get the value of historylist*
- from the top loop! Of course it becomes circular. It's really
- just an a-list of inputs and outputs.
- Date: 5-Aug-82 16:20:10
- From: LANAM at HP-HULK
- Subject: + and - as start of atom names.
- Class: Request
- It would be nice if the scanner was changed such that if
- + and - are followed directly by an alphabetic character,
- (ex +a), then an atom is returned ( +a ), instead of
- two atoms (+ and a).
- douglas
- RESPONSE (Eric)
- Yes, it would be nice. This will require a rewrite of the
- token scanner. Perhaps we can get Lisp code from CMU for
- the Common Lisp token scanner.
- Date: 5-Aug-82 16:05:15
- From: LANAM at HP-HULK
- Subject: (eval and macros)
- Class: Inquiry, bug
- is there any reason the following should produce different results:
- (eval expression)
- and
- (eval (macroexpand expression))
- I have an example (a bit hairy and long), where the second is correct
- and the first gives a strange error message about trying to set the
- number 2.
- could someone spend some time to look at this to decide what may be
- the problem.
- thanks,
- douglas
- Date: 5-Aug-82 15:37:32
- From: LANAM at HP-HULK
- Subject: can the sytem just break instead of halt when bps size is exceeded?
- Class: Inquiry, request
- Date: 5-Aug-82 15:23:44
- From: LANAM at HP-HULK
- Subject: what is bps?
- I got error ?
- fatal error : bps exhausted during faslout.
- and the system aborted.
- what happened?
- RESPONSE (Perdue):
- You ran out of space for compiled code.
- PSL provides no information about the sizes of spaces, so far as
- I know. I'm very interested in this myself, and I don't even
- know the initial sizes of most of the spaces. Binary program
- space is not reclaimed. Maybe someday it will be.
- RESPONSE (Eric)
- Yes, this will require a redesign of low-level storage allocation
- in PSL.
- Date: 5-Aug-82 15:09:07
- From: LANAM at HP-HULK
- Subject: package system and faslout/faslin
- Class: Comment, advice
- faslout/faslin known nothing about the package system, and will produce
- a file that can not be read in successfully, if that file references
- variables in packages.
- (usually you will get an operating system error (illegal instruction)).
- The manual's suggestion to rename functions in global is not a real
- solution, and suggests further that the package system is not really
- usuable in a real sense yet.
- This section of the system is not finished and I do not feel is in a
- useful enough state to be advertised or included in the manual.
- douglas
- RESPONSE (Eric)
- Totally true!
- Date: 5-Aug-82 13:05:17
- From: Cris Perdue <Perdue>
- Subject: Unwanted PSL messages
- Class: Response
- To not get bothered about redefining system functions, set the
- global flag *usermode to NIL. The flag *redefmsg determines whether
- you are told when functions are redefined. There is currently
- no way to get a quiet dskin, except modifying the code or writing
- your own.
- I don't know if you can turn off the "*** blah already loaded"
- message. There is no mechanism established for forcing the system
- to reload a library module unless you specify "pl:" as the location
- of the module.
- RESPONSE (Eric)
- There is currently no way to turn off the *** ... already loaded
- message. It mostly generates more heat than light, perhaps it
- should just be removed?
- Date: 5 Aug 1982 1259-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Re: start up file.
- Class: Response
- No, there is no "init file". We have had several requests for that
- feature, so perhaps it can be added soon.
- RESPONSE (Eric)
- Yes, init files would be nice. They do require some system
- dependent primitives, especially the ability to find the home
- directory of a user. Not a hard job, but the primitives should
- be specified before doing it.
- Date: 5-Aug-82 08:31:23
- From: LANAM at HP-HULK
- Subject: tr bug
- Class: Request
- tr shouldn't ask me how many arguments a compiled function takes.
- Why can't it just create a nexpr instead and not worry about the number
- of arguments?
- (sometimes I don't feel like looking up the answer to this question).
- RESPONSE (Eric)
- Code blocks should include the number of arguments they expect
- so that this query needn't happen.
- Date: 5-Aug-82 14:02:21
- From: LANAM at HP-HULK
- Subject: FASLOUT
- Class: Bug, deficiency
- (faslout) during (faslout) should not be executed.
- (it currently is).
- douglas
- RESPONSE (Eric)
- Fixed.
- Date: 3-Aug-82 15:22:56
- From: LANAM at HP-HULK
- Subject: bug with faslout/faslend.
- do
- (faslout "foo")
- then do something to cause an error, (any error or break will do).
- such as:
- (eval-when (compile) (+ 'a 'b))
- {actually macros can cause errors, as can any eval-when construct}.
- If you do (faslend) in the break point, then (reset),
- the system will only echo your input after that.
- If you do (faslend) again,
- an error (illegal instruction) occurs, and psl will halt.
- Date: 3-Aug-82 15:13:55
- From: LANAM at HP-HULK
- Subject: package/compiler/fasl bug
- Class: Fatal bug
- With the following file (called a.lisp), do the following and you will get
- illegal instruction.
- (load package)
- (faslout "A")
- (dskin "a.lisp")
- (faslend)
- (faslin "a.b")
- file a.lisp:
- -----------
- (\load \package)
- (\setpackage '\global)
- (eval-when (compile)
- (createpackage 'franz 'global)
- (setpackage 'franz))
- (createpackage 'franz 'global)
- (setpackage 'franz)
- (eval-when (compile)
- (localintern 'franz\xx))
- (de franz\xx (yy) yy)
- Date: 2-Aug-82 15:43:38
- From: BATALI at HP-HULK
- Subject: TYPE function
- Class: Request
- It would be just dreamy if there were a function TYPE, which
- returns an ID signifying the type of its argument:
- (type 'foo) => ID
- (type 5) => FIXNUM
- (type '(a b)) => PAIR
- Etc.
- RESPONSE (Perdue):
- Yes, probably named TYPEP, as in Common LISP. See similar
- requests made very early.
- Date: Fri Jul 30 14:04:39 1982
- From: John Tupper (hp-pcd)
- Subject: TR
- Class: Bug
- Vax psl bug:
- When the debug package is loaded, the normal trace functions
- don't work correctly.
- After loading the debug stuff, (UNTR) does not restore the original
- definition of the function. (TR) works fine, and (UNTR) will cause tracing
- to halt; it just doesn't restore the original definition.
- maddog
- RESPONSE (Eric)
- The "standard" PSL TR function is very poor. The 20 and Vax
- systems should be changed to autoload DEBUG instead of using
- this brain-damaged version.
- Date: 30-Jul-82 15:41:22
- From: Alan Snyder <AS at HP-HULK>
- Subject: EMODE cursor movement
- Class: Bug
- EMODE (on the HP2648 at least) fails to check for attempts to move the
- cursor off the right edge of the screen. For example, if you type in
- a line that is longer than the screen width, the cursor will move to
- the next line and occasionally random stuff will come out (parts of
- escape sequences, it looks like).
- Date: Fri Jul 30 11:40:05 1982
- From: tw cook (hp-pcd)
- Subject: testing 'bug' function - ignore
- Class: News
- I have implemented the 'bug' function in our PSL - it just fires up
- 'mail' to PSL, which forwards both to PSL at labs and to the notesgroup
- LISPERS here. Those of you at hplabs who are listening - does stuff
- mailed to PSL@HULK get eventually sent on to Griss & crew? Should I
- mail to them as well? If so, how do I get there (via mail)?
- Thanks,
- tw
- Date: 30 Jul 1982 11:28-PDT (Friday)
- From: Ching-Chao.Liu <hp-pcd!ching>
- Subject: FUnboundP
- Class: Manual bug
- On page 10.4 of psl manual, the description of FUnBoundP is incorrect.
- It should be
- Tests whether there is a definition in the function cell of U;
- returns NIL if there is a definition, T if not.
- Date: 27-Jul-82 16:38:49
- From: LANAM at HP-HULK
- Subject: break package
- Class: Comment
- In a break package, if I have a variable i (or q, c, r, m, or e), and
- want to print its value, i need to do
- (eval 'i)
- RESPONSE (Eric)
- Yes, it's clumsy. Break loop needs reworking (actually starting
- over). See other previous comments.
- From: Alan Snyder <AS at HP-HULK>
- Subject: PSL bug
- Class: Deficiency
- The ContError macro is not very robust. For example, consider
- the following expansion (admittedly, the argument is improper):
- (MacroExpand '(ContError 0 "" file-name file-name))
- ==>
- (CONTINUABLEERROR 0 (BLDMSG "" FILE-NAME) (LIST '#<Unknown:261740000002>))
- Naturally, this form will cause the garbage collector to barf.
- When the compiler is given this sort of stuff, it produces the
- following lovely code:
- ------------------------------------------------------------
- Compiling TEST
- Source Code:
- (LAMBDA (FILE-NAME) (TEST1 (CONTERROR 0 "s" FILE-NAME FILE-NAME)))
- ------------------------------------------------------------
- Expanded Source Code:
- (LAMBDA (FILE-NAME)
- (TEST1
- (CONTINUABLEERROR
- 0
- (BLDMSG "s" FILE-NAME)
- (LIST '#<Unknown:254000006725>))))
- ------------------------------------------------------------
- Object Code:
- (*ENTRY TEST EXPR 1)
- (*ALLOC 1)
- (*MOVE (REG 1) (REG 2))
- (*MOVE '"s" (REG 1))
- (*LINK BLDMSG EXPR 2)
- (*MOVE (REG 1) (FRAME 1))
- (*MOVE '#<Unknown:254000006725> (REG 1))
- (*LINK NCONS EXPR 1)
- (*MOVE (REG 1) (REG 3))
- (*MOVE (FRAME 1) (REG 2))
- (*MOVE '0 (REG 1))
- (*LINK CONTINUABLEERROR EXPR 3)
- (*LINKE 1 TEST1 EXPR 1)
- L0003L0004 (FULLWORD 0)
- (STRING "s")
- (*ENTRY TEST EXPR 1)
- (ADJSP (REG ST) 1)
- (MOVE (REG 2) (REG 1))
- (MOVE (REG 1) "L0001")
- (PUSHJ (REG ST) (ENTRY BLDMSG))
- (MOVEM (REG 1) (INDEXED (REG ST) 0))
- (MOVE (REG 1) "L0002")
- (PUSHJ (REG ST) (ENTRY NCONS))
- (MOVE (REG 3) (REG 1))
- (MOVE (REG 2) (INDEXED (REG ST) 0))
- (SETZM (REG 1))
- (PUSHJ (REG ST) (ENTRY CONTINUABLEERROR))
- (ADJSP (REG ST) -1)
- (JRST (ENTRY TEST1))
- L0002 (FULLWORD (MKITEM 10 "L0003"))
- L0001 (FULLWORD (MKITEM 4 "L0004"))
- *** Function `TEST' has been redefined
- *** (TEST): base 374744, length 17 words
- ------------------------------------------------------------
- There is no warning message of any kind. However, when
- the compiled code is loaded and executed, it will also
- create bad data that the garbage collector will barf on.
- RESPONSE (Eric)
- Fixed. See BUG-FIX.LOG
- Date: 27 Jul 1982 1638-PDT
- From: LANAM at HP-HULK
- Subject: break package problem
- Class: Deficiency
- In a break package, if I have a variable i (or q, c, r, m, or e), and
- want to print its value, i need to do
- (eval 'i)
- RESPONSE (Eric):
- Same as above.
- Date: 27 Jul 1982 1629-PDT
- From: LANAM at HP-HULK
- Subject: string "123" => 123 conversion function needed?
- Class: Inquiry
- Is there a function that will convert "123" into the number 123,
- or "12.4e2" into the number "12.4e2" ?
- RESPONSE (Eric):
- A read-from-string function should be implemented. It should
- be quite easy.
- Date: 27 Jul 1982 1439-PDT
- From: LANAM at HP-HULK
- Subject: br
- Class: Inquiry
- If i use br, How do I continue from a break level.
- I tried every letter given by ?.
- 'R' gave an error, something about nil undefined.
- 'c' did something similar.
- 'q' went to top level.
- douglas
- RESPONSE (Eric)
- BR has never worked right. It should be removed along with
- TR in MINI-TRACE
- Date: 27 Jul 1982 1433-PDT
- From: LANAM at HP-HULK
- Subject: untr
- Class: Deficiency
- untr does untrace a function, but unlike the manual says, it does
- not restore the original definition. It leaves a strange lisp function
- around which is similar to the function when it is traced. It would
- be nice if the functions definition was restored to its original place.
- RESPONSE (Eric)
- Yes, UNTR in DEBUG doesn't remove the tracing function, it just
- suppresses the tracing. The function to resore it to its
- original state is RESTR, as described in the manual in section
- 16.10.
- Date: Mon Jul 26 15:10:41 1982
- In-real-life: Tw Cook
- Subject: psl bug?
- Class: Bug
- In the Vax version:
- If you run (help emode) [or any long help] then do a control-C to try and
- interrupt it, you get thrown into a break loop which I have not been able
- to exit from. Is this an error in the help code, rather than
- in psl itself?
- RESPONSE (Eric)
- The interrupt handler on the VAX has some strange behavior I have
- not been able to track down.
- Date: 26 Jul 1982 1520-PDT
- From: LANAM at HP-HULK
- Subject: bad feature : read macros on property list.
- Class: Deficiency
- By having the function associated with read macros stored on the property list,
- there is an inability to have different read macros in different read tables,
- for the same character.
- douglas
- RESPONSE (Eric)
- True. The whole input/output subsystem is very poor, for which
- there's no one to blame but me. See previous comments about the
- token scanner.
- Date: 26 Jul 1982 1155-PDT
- From: Alan Snyder <AS>
- Subject: EMODE bug
- Class: Bug
- EMODE believes that ^Z marks the end of a text file.
- RESPONSE (Eric)
- PSL uses a character as the EOF marker, which happens to be
- ^Z on the Dec-20. Any file with a ^Z in it will not be read
- correctly.
- Date: 24 Jul 1982 1044-PDT
- From: LANAM at HP-HULK
- Subject: scanner read bug with numbers.
- Class: Bug
- 45 lisp> 1.000000000000000000000000000000000000000000000000000
- 0.0
- 46 lisp> 1.222222222222222222222222222222222222222222222222222222
- 1.7682604E33
- 47 lisp> 100000000000000000000000000000000000000000000000
- 0
- 48 lisp> 2222222222222222222222222222222
- 2386092942
- 49 lisp> 1000000000000000000000
- 25209864192
- 50 lisp> 1000000000000
- 3567587328
- douglas
- FIXED (Benson):
- Actually, just a crude patch that should improve things.
- Date: 24 Jul 1982 1043-PDT
- From: LANAM at HP-HULK
- Subject: can prettyprint do better than this with the following please?
- Class: Request
- (DEF
- FRANZ\FACT
- (EXPR LAMBDA (N) (COND ((EQ N 0) 1) (T (* N (FRANZ\FACT (!- N 1)))) )))
- I would like the cond split up into 2 lines (one per clause).
- Date: 23 Jul 1982 1738-PDT
- From: LANAM at HP-HULK
- Subject: apply on macros.
- Class: inquiry
- Is there an apply that works on any function (whether the function is a
- macro or not), and acts the same whether the function was written as
- a macro or an expr or a fexpr? This would be very useful (especially
- with the number of basic functions written as macros in psl).
- RESPONSE (Eric)
- The function you want is EVAL, not APPLY. APPLY is meant to
- be a primitive operation which does no evaluation.
- Date: 23 Jul 1982 1718-PDT
- From: LANAM at HP-HULK
- Subject: how easy is it to redefine the psl reader?
- Class: inquiry
- Is there a table describing the automaton? Or is it hardwired in?
- Is the table accessable in lisp and changable? This would be very
- useful.
- RESPONSE (Eric)
- It is hardwired in. See previous comments on the token scanner.
- Date: 23 Jul 1982 1715-PDT
- From: LANAM at HP-HULK
- Subject: identifiers starting with numbers
- Class: request
- I would like the system to read an atom like 1+ as the atom |1+|, not
- the number 1 and the atom +. How can I teach the system to handle this?
- 1a would be an atom. 1 a would be the number 1 followed by the atom a.
- I need this feature to handle a franz conversion since a basic franz function
- is 1+ and 1-.
- douglas
- RESPONSE (Eric)
- Likewise.
- Date: 23 Jul 1982 1657-PDT
- From: LANAM at HP-HULK
- Subject: identifier bug.
- Class: Deficiency
- Characters and identifiers should be separate entities.
- The character c and the identifier c are not the same
- thing. Currently in the system, it is possible to
- intern a single character-name identifier into a package,
- but it is impossible to type its name back in.
- (setpackage 'franz)
- (localintern 'a)
- => franz\a
- (Setq franz\a 3) will set global\a
- (set (localintern 'a) 3) will set franz\a.
- franz\a is interpreted as global\a.
- I should be able to have my franz\a.
- douglas
- RESPONSE (Eric)
- Single character identifiers are treated very specially in PSL.
- Since packages are not integrated, they cannot be interned in
- packages other than GLOBAL.
- Date: 21 Jul 1982 16:48:33-PDT
- From: hearn@RAND-RELAY at HP-Speech
- Subject: Readch()
- Class: Inquiry, Bug
- Readch does not do case conversion, irrespective of the setting of *raise.
- If *raise is on, shouldn't lower case be converted to upper case?
- RESPONSE:
- Date: 21 Jul 1982 16:48:40-PDT
- From: BENSON@UTAH-20 at HP-Speech
- Subject: Re: Question on readch()
- I've changed the source for ReadCh so that it does case
- conversion on *Raise. This bit of Standard Lisp compatibility
- seems to have slipped through the cracks until now. I guess
- ReadCh just isn't used that much.
- Date: 21 Jul 1982 1549-PDT
- From: Alan Snyder <AS at HP-HULK>
- Subject: UnBoundP
- Class: Documentation deficiency
- The function UnBoundP should be described (or mentioned)
- in the chapter on Identifiers.
- Date: 21 Jul 1982 1422-PDT
- From: Alan Snyder <AS>
- Subject: DEFSTRUCT
- Class: Deficiency
- Using DEFSTRUCT (from NSTRUCT) causes the PSL compiler
- to produce "function redefined" messages. As far as
- the user is concerned, these messages are spurious
- and should be suppressed.
- Date: 21 Jul 1982 1253-PDT
- From: Alan Snyder <AS>
- Subject: "Constant" list structure
- Class: Deficiency, comment
- PSL allows a program to modify "constant" list structure that
- has been created by the compiler in the code space. Since
- this "constant" list structure is not scanned by the garbage
- collector, any pointers inserted into it will not be updated
- when garbage collection occurs, and will henceforth point
- to randomness. PSL should use the address protection provided
- by the hardware to prevent modification of "constant"
- list structure.
- RESPONSE (Benson):
- It is incorrect to modify list structure constants. They are placed
- in code space on the VAX when a dumplisp is done.
- Date: 21 Jul 1982 1127-PDT
- From: Alan Snyder <AS>
- Subject: Unhandled THROW
- Class: Deficiency, documentation bug
- The manual (section 9.4) says that an unhandled THROW is treated
- as an ERROR in the context of the THROW. In fact, what happens
- is that PSL is restarted at top-level. I would prefer that it
- behave as the manual describes.
- RESPONSE (Eric)
- It's very hard to fix with the current implementation of CATCH.
- Date: 16 Jul 1982 0244-PDT
- From: BATALI
- Subject: Compiler bug
- Class: Bug
- Here is an interesting function:
- (de c3 () (cond ((= 3 3) 'yes) (t (= 3 3))))
- Interpreted:
- (c3)
- YES
- Compiled:
- (c3)
- T
- Obviously the compiler is doing something grossly clever, obviously it
- is doing it wrong.
- --John
- Date: 16 Jul 1982 0237-PDT
- From: BATALI
- Subject: Compiler bug
- Class: Bug, deficiency
- The compiler doesn't enforce the restrictions on the placement of
- RETURN statements. (See pages 9.4 and 9.5 of the manual.)
- This function gets an error if interpreted, but returns its argument
- when compiled:
- (de just-return (arg) (return arg))
- Actually, the compiler ought to complain about this one.
- --John
- Date: 16 Jul 1982 0149-PDT
- From: BATALI
- Subject: RPLACHAR (String package)
- Class: Bug, compiler bug
- The function RPLACHAR stores a character into a string. It works fine
- in interpreted code, but when called from a compiled function, we get:
- ***** Undefined function STRINF called from compiled code
- Looking on the property list of RPLACHAR, we notice a CMACRO property
- whose value is:
- (LAMBDA (S I X) (PUTSTRBYT (STRINF S) I X))
- Which seems to be where the call to STRINF comes from.
- Giving RPLACHAR a CMACRO property of nil "fixes" the problem.
- --John
- RESPONSE (Eric)
- Fixed.
- Date: 15 Jul 1982 1258-PDT
- From: Alan Snyder <AS>
- Subject: EMODE C-M-B
- Class: Bug, comment
- C-M-B (backwards s-expr) loses if the corresponding left paren
- is the first character in the buffer: it leaves the cursor
- to the right of the paren. There is explicit code that
- makes this adjustment, and this code is marked in the source
- as being a "KLUDGE!". I don't know why this kludge is there.
- Date: 14 Jul 1982 1404-PDT
- From: Alan Snyder <AS>
- Subject: STRING< (String package)
- Class: Bug
- The function STRING< in STRINGS.LSP has the interesting property
- that both of the following forms evaluate to NIL:
- (string< "b" "aa")
- (string< "aa" "b")
- This anomoly results from the improper testing of string length
- in the function. The other string comparison functions seem
- to have the same bug.
- [This seems to have been fixed.]
- Date: 14 Jul 1982 0759-PDT
- From: Alan Snyder <AS>
- Subject: EMODE bug
- Class: Bug
- I fixed a bug in REFRESH.RED: ClearWindow() previously
- failed to clear the associated virtual screen, causing
- the old contents to later reappear in place of empty
- lines.
- Date: 13 Jul 1982 1739-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: FIND module
- Class: Documentation deficiency
- The "find" module is not loaded in bare PSL, but the documentation
- does not mention the fact.
- Date: 13 Jul 1982 1144-PDT
- From: Alan Snyder <AS>
- Subject: FindPrefix, FindSuffix -- request
- Class: Request
- FindPrefix and FindSuffix should convert their string argument
- to upper case.
- Date: 13 Jul 1982 1140-PDT
- From: Alan Snyder <AS>
- Subject: PrettyPrint
- Class: Request
- For direct use by a human, it would be better if PRETTYPRINT returned
- NIL, instead of its argument. That way, the user doesn't have to
- see the same object printed twice by the Read/Eval/Print loop.
- Date: 13 Jul 1982 1120-PDT
- From: LANAM
- Subject: Interning with the package system
- Class: Inquiry
- How can I get the package-specifier prefix in a string and concat it
- with other strings, and then intern it.
- I tried, and the package-specifier prefix character got an escape
- character inserted before it.
- RESPONSE (Benson):
- Can't be done.
- Date: 13 Jul 1982 1114-PDT
- From: Alan Snyder <AS>
- Subject: COND
- Class: Deficiency
- COND behaves differently in some cases depending upon whether
- it is interpreted or compiled. An example is provided by
- the following function:
- (de foo (a) (cond ((= a 3) 4) a))
- If interpreted, FOO will return the parameter A unless A is 3.
- If compiled, FOO will return NIL in those same cases.
- The compiled code is shown below:
- ------------------------------------------------------------
- Compiling FOO
- Source:
- (LAMBDA (A) (COND ((= A 3) 4) A))
- ------------------------------------------------------------
- Object:
- (*ENTRY FOO EXPR 1)
- (*ALLOC 0)
- (*JUMPNOTEQ (LABEL G0004) (REG 1) '3)
- (*MOVE '4 (REG 1))
- (*EXIT 0)
- (*LBL (LABEL G0004))
- (*MOVE 'NIL (REG 1))
- (*MOVE 'NIL (REG 1))
- (*EXIT 0)
- *** Function `FOO' has been redefined
- *** (FOO): base 334750, length 7 words
- ------------------------------------------------------------
- Date: 13 Jul 1982 1056-PDT
- From: Alan Snyder <AS>
- Subject: ErrorSet
- Class: Deficiency
- ErrorSet is currently implemented as an EXPR. This fact has the subtle,
- yet critical effect that the form enclosed in the error set can only
- use fluid variables. If you don't declare the variables fluid, the
- code will work interpretively, but will execute incorrectly when compiled.
- No warning is given by the compiler, nor is there any hint in the manual
- that this problem exists.
- Note: the file directory.sl that we sent to Utah fails when compiled for
- this reason. I suggest you send a message to Will about this.
- RESPONSE (Eric)
- Yes, this is also true of CATCH. I have implemented *CATCH which
- is a special form and open-compiles. It will be easy to define
- ERRSET as a macro or special form now.
- Date: 13 Jul 1982 1045-PDT
- From: BATALI
- Subject: Readmacros
- Class: Deficiency, comment
- I've been experimenting with read macros in PSL. None of the
- advertised functions for creating them exist, but the following
- works:
- (defmacro define-read-macro (table id fname)
- `(progn
- (put ',id 'lispreadmacro ',fname)
- (putv ,table (id2int ',id) 11) ;; delimiter
- ',id))
- This does what PutReadMacro is supposed to do (but it doesn't evaluate
- the id or the fname).
- Note how this seems to work: If the reader (actually, the function
- ChannelReadTokenWithHooks) sees a character with code 11 in the
- scantable, it looks for the LISPREADMACRO property on the id
- corresponding to the character. If there is one there, it applys it
- in place of ChannelReadTokenWithHooks to the input channel.
- This would be fine and not very interesting and I certainly wouldn't
- be sending you this long message if it weren't for the fact that this
- scheme means you can't "bind" a scantable and expect different
- behaviour from characters. This is because, although the scantable
- can be bound, the system still looks for the LISPREADMACRO property of
- the id. So it is not possible for a character to have different
- properties on different scantables. Thus:
- (define-read-macro somerandomscantable* !( ChannelTotallyTrashSystem)
- Would lose no matter which scan table is currently in effect.
- We need the ability to pair characters with functions in particular
- scantables only. It is very likely that the PSL people understand
- this, and indeed, the relevant sections of the manual (pp 13.10 - 13.11
- and 13.18) seem to claim that this is what ought to go on.
- --John
- RESPONSE (Eric)
- This was reported earlier (actually later because this is in
- reverse chronological order).
- Date: 13 Jul 1982 1030-PDT
- From: BATALI
- Subject: Unwind-Protect
- Class: Suggestion
- Here is the code for unwind-protect.
- It has the same semantics as the lisp-machine version
- (except in interpreted code that happens to use the
- variable unwind-protect-value). The only problem is
- the problem with catch being an EXPR.
- (defmacro unwind-protect (protected-form . undo-forms)
- `(let ((unwind-protect-value (catch nil ',protected-form)))
- (progn . ,undo-forms)
- (if throwsignal!*
- (throw throwtag!* unwind-protect-value)
- unwind-protect-value)))
- Date: 12 Jul 1982 1836-PDT
- From: BATALI
- Subject: Dipthongs
- Class: Inquiry, documentation deficiency
- What are dipthongs? Why are they neat?
- How do I use them?
- Why aren't they documented?
- Date: 12 Jul 1982 1145-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: EMODE terminal handling
- Class: Deficiency
- EMODE does not use the terminal driver that corresponds to TOPS-20's
- idea of what the terminal type is. It just uses whatever terminal
- driver is loaded (HP2648A in our case).
- Date: 12 Jul 1982 1102-PDT
- From: Johnson
- Subject: PSL String Package
- Class: Request, remark
- A routine to convert from STRING to INTEGER would be nice.
- The SUBSTRING function is peculiar: its last argument is
- one greater than the index of the last character to be
- extracted, even given that indexes begin at zero!
- Date: 9 Jul 1982 1456-PDT
- From: Alan Snyder <AS>
- Subject: PSL internal bug
- Class: Bug
- The following example demonstrates a bug in PSL. It is the shortest example I
- could find, derived from a real attempt at compiling a file. The offending
- object is a machine instruction, the exact identity of which changes with
- different programs. In this case, it is "CAMN 0(17)". The example is highly
- sensitive to change. For instance, if the function name is changed to "FOO",
- no error is reported. Similarly, no error is reported if any of the loaded
- modules are omitted.
- -------------------------------------------------------------------------------
- @psl:bare-psl
- PSL 3.0, 9-Jun-82
- 1 lisp> (load emode common jsys)
- NIL
- 2 lisp> (faslout "nul:")
- FASLOUT: (DSKIN files) or type in expressions
- When all done execute (FASLEND)
- T
- 3 lisp> (de fooo (name)
- 3 lisp> (let ((n (string-length name)))
- 3 lisp> (cond ((= (indx name (- n 1)) (char >))
- 3 lisp> (concat name "*.*.*"))
- 3 lisp> name)))
- FOOO4 lisp> (faslend)
- *** Init code length is 1
- **FASL**INITCODE**NIL
- 5 lisp> (reclaim)
- ***** Fatal error during garbage collection
- Illegal item in heap at 502462
- -------------------------------------------------------------------------------
- Date: 30 Jul 1982 11:27-PDT (Friday)
- From: John.Tupper <hp-pcd!maddog>
- Subject: bug report
- I have found a bug in the vax version of the psl zpedit.
- When I add something to the end of an s-expression [with the n command]
- the editor changes the old last expression to nil.
- start:
- (LIST (CAR X) (CDR Y))
- execute:
- (N (BOGUS BO GUS))
- finish:
- (LIST (CAR X) NIL (BOGUS BO GUS))
- The same thing happens with the bo command.
- start:
- (LIST (CAR X) (CDR Y))
- execute:
- bo 3
- finish:
- (LIST (CAR X) NIL)
- icky-poo,
- maddog
- Date: 9 Jul 1982 0948-PDT
- From: SOREFF at HP-THOR
- Subject: Structure editor "A" command
- Class: Bug
- I've constructed an example of how the "(a s-expression)" command in the
- structure editor can fail. It seems to fail when one is adding an item after
- the last expression in a list. I've edited the log slightly, removing blank
- lines to make it more compact.
- @take psl
- PSL 3.0, 9-Jun-82
- 1 lisp> (load zpedit)
- NIL
- 2 lisp> (setq a '(b c d e f g))
- (B C D E F G)
- 3 lisp> (editv a)
- EDIT
- -E- p
- (B C D E F G)
- -E- 3 p
- D
- -E- (a z) 0 p
- (B C D (Z) E F G)
- -E- 7 p (a y) 0 p
- G
- (B C D (Z) E F NIL (Y))
- -E- pp
- (B C D (Z) E F NIL (Y))
- -E- 8 p
- (Y)
- -E- (a x)
- -E- p
- ... NIL (X))
- -E- ^
- -E- p
- (B C D (Z) E F NIL NIL (X))
- -E- ok
- A
- 4 lisp> (quit)
- Date: 9 Jul 1982 0938-PDT
- From: Alan Snyder <AS>
- Subject: DOLIST
- Class: Bug
- DOLIST (in PU:COMMON.SL) fails to bind the loop variable.
- Date: 8 Jul 1982 1447-PDT
- From: Alan Snyder <AS>
- Subject: EMODE C-M-B
- Class: Bug, deficiency
- EMODE C-M-B (backward sexpr) gets excessively confused by comments.
- For example, when at the end of the following text
- (setq a b)
- %%%%%%%%%%
- C-M-B will stop at the "b".
- (Probably other commands have similar problems.)
- I think the reason for this is that '%' (the comment character)
- is ignored by scan-word by not by skip-blanks.
- Thus in the implementation of C-M-B, skip-blanks skips back
- to the '%', and then skip-word skips back to the 'b'.
- The probable fix would be to change the scan table.
- Date: 7 Jul 1982 1651-PDT
- From: SOREFF at HP-THOR
- Subject: Structure editor "N" command
- Class: Bug
- I think I've run into a bug in the PSL structure editor. The "N" command,
- which appears to be supposed to append an s-expression on the end of the
- current list, does that, but also changes the expression just before the
- added one to NIL.
- @login guest
- Job 5 on TTY152 7-Jul-82 4:41PM
- Previous LOGIN: 7-Jul-82 4:40PM
- @take <psl>logical-names
- @r <psl>bare-psl
- PSL 3.0, 9-Jun-82
- 1 lisp> (load zpede^F^Fit)
- ***** `ZPED^FIT' load module not found {99}
- Break loop
- 2 lisp break>> q
- 3 lisp> (load zpedit)
- NIL
- 4 lisp> (setq tst '(a b c d e f g))
- (A B C D E F G)
- 5 lisp> (editv tst)
- EDIT
- -E- p
- (A B C D E F G)
- -E- (-3 z) p
- (A B Z C D E F G)
- -E- (n x) p
- (A B Z C D E F NIL X)
- -E- ok
- TST
- 6 lisp> (quit)
- Date: 7 Jul 1982 0929-PDT
- From: Alan Snyder <AS>
- Subject: NTH and PNTH
- Class: Bug
- The function NTH produces obscure error messages if the
- index argument is out of range. The error messages are
- obscure because (1) they refer to the function PNTH,
- which the user should have no need to know about, and
- (2) they report an index which is different than the
- value given in the call to NTH.
- [8/4/82 - This has been fixed.]
- A similar comment applies to PNTH: the error message
- reports an incorrect index value.
- [8/4/82 - This hasn't.]
- Date: 7 Jul 1982 0852-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: IN and EVIN
- Class: Documentation deficiency, bug
- IN and EVIN, available from RLISP, are not defined as functions.
- IN even has an entry in the manual, though there is no description
- of what it does (page 31.12). These should be available from LISP.
- Date: 6 Jul 1982 1212-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: RDS, WRS
- Class: Complaint
- RDS and WRS are virtually guaranteed to cause lossage concerning
- I/O channels, especially since there is no UNWIND-PROTECT in PSL.
- Date: 6 Jul 1982 1209-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Debugging
- Class: Deficiency
- There are various deficiencies concerned with debugging.
- There is no genuine backtrace that uses the saved variable bindings,
- even for interpreted code.
- The error handling system is so portable that it evidently cannot
- use the DEC-20 APR trap mechanism, etc..
- It is difficult to set up an interpreted version of a subsystem that
- is usually compiled. (This is a separate issue from the capabilities
- of the system internals.) In particular, facilities for requiring
- certain files to be present when a procedure is loaded for interpretive
- execution don't exist. Also functions for loading interpreted and
- compiled code are distinct, not to mention the additional distinct
- function for loading "system" files (files in pl:).
- Date: 6 Jul 1982 1041-PDT
- From: Johnson
- Subject: DSKIN
- Class: Inquiry
- (DskIn "foo.lsp") prints the values of all the forms evaluated in
- foo.lsp. Is there a silent version of DskIn?
- RESPONSE (Benson):
- Yes: LAPIN.
- Date: 2 Jul 1982 2335-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: DEC-20 REENTER and CONTINUE
- To: psl at HP-HULK
- On the DEC-20, ^C followed by REENTER or CONTINUE screws up
- badly for some reason. I would think they would just not
- be available commands.
- Date: 2 Jul 1982 2334-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Debugger user interface
- Class: Bug
- The "break loop" does not establish echoing as it is entered.
- Date: 2 Jul 1982 2329-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: FINDPREFIX and FINDSUFFIX
- Class: Documentation deficiency, bug
- These are not loaded with the USEFUL library and there whereabouts
- is not documented in the manual, though they themselves are.
- They appear in pu:find.red.
- Date: 1 Jul 1982 1406-PDT
- From: Kendzierski (Nancy)
- Subject: CRLF variable
- Class: Bug, documentation bug
- The manual (page 20.2, section 20.3.1 "TOPS-20 User Level
- Interface") states that "a global variable, CRLF, is provided
- with the <CR><LF> string. Attempts to use this global variable
- result in a CRLF is an unbound id {99} message from psl.
- RESPONSE (Benson):
- Loading the EXEC module defines CRLF.
- Date: 30 Jun 1982 1057-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: "FLAGS"
- Class: Inquiry, deficiency
- In Chapter 12 of the manual the RLISP "On" and "Off" constructs are
- discussed briefly. It appears that LISP users should not just
- set the corresponding global variables, because On and Off may
- have additional side effects. If this is true, there should be
- some easy way of doing On and Off in LISP.
- Date: 28 Jun 1982 1746-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: C-M-rubout in EMODE
- Class: Bug
- Sometimes (always?) goes into an infinite loop.
- Date: 28 Jun 1982 1714-PDT
- From: Kendzierski (Nancy)
- Subject: PSL logical names
- Class: Inquiry
- How come p20d: as <psl.20-dist> isn't defined in the
- <psl>logical-names.cmd file? It is listed in the manual on page
- 22.2.
- Date: 6/23/82
- From: Kendzierski
- Subject: !*SAVENAMES
- Where: Page 16.18
- Class: Inquiry
- Why is !*SAVENAMES initially NIL?
- Date: 6/23/82
- From: Kendzierski
- Subject: RCRef
- Where: Page 18.3
- Class: Inquiry
- Is RCRef only available in RLisp? Why? or How is it used in
- Lisp?
- From: Kendzierski
- Date: 6/23/82
- Subject: !*LOSE
- Where: Page 16.18
- Class: Documentation deficiency
- !*LOSE -- what is this? It's constantly referred to, but never
- defined/explained
- Date: 6/23/82
- From: Kendzierski
- Subject: #+
- Where: Page 18.3
- Class: Inquiry
- Why doesn't #+ accept three arguments? Because the third is
- optional?
- Date: 6/23/82
- From: Kendzierski
- Subject: ANYREG
- Class: Inquiry
- If the most common adjust function removes ANYREG to eliminate
- looking for it in patterns, why have it?
- Date: 6/11/82
- From: AS
- Subject: I/O channels
- Class: improvement, section 13.1, page 13.1
- Why is a channel an integer instead of something more abstact?
- If you allow I/O to strings and lists, then why limit the maximum
- number of channels?
- Date: 6/11/82
- From: AS
- Re: improvement, section 13.2, page 13.3
- Using global variables to initialize channel functions when a
- channel is OPENed is poor. It would be better to define a
- separate OPEN-SPECIAL that takes additional arguments, or use a
- keyword init list a la Zetalisp. Similar comments about misuse
- of global variables apply elsewhere, e.g. DUMPLISP.
- Date: 6/11/82
- From: AS
- Re: manual, section 13.6, page 13.13
- PRINTF is an expr that takes a variable number of arguments. If
- this is possible then you should explain how users can do it.
- Date: 6/11/82
- From: AS
- Subject: LISP vs. RLISP syntax
- Class: Inquiry, bug
- Where: manual, section 16.5, page 16.13
- Can EMBEDding be done using Lisp syntax? If so, how? Can STUBs
- be defined using Lisp syntax? If so, how?
- Date: 6/11/82
- From: AS
- Subject: EDITF
- Class: Bug, inquiry
- Where: manual, section 17.5, page 17.11
- I was not able to achieve any effect by giving extra command
- arguments to EDITF. In any case, COMS:forms is not a defined
- type; it should be either [COMS:form] or COMS:form-list.
- Date: 6/11/82
- From: AS
- Subject: FIELD, GETFIELD
- Class: Documentation deficiency
- Re: manual, section 21.2.8, page 21.7
- Is the field accessing function FIELD or GETFIELD? Both names
- are used in the manual. Neither name is defined in our PSL.
- Date: 6/25/82
- From: Filman
- Subject: READ, Interactive input
- Class: Feature request
- It would be very nice to have some way of telling PSL to consider
- all open parens to be closed, like right square bracket ("]") in
- some LISPs.
- It would also be nice not to get an error message whenever one
- types excess right parentheses.
- Date: 6/25
- From: Perdue, Griss, AS
- Subject: Common-LISP compatibility library
- Class: Documentation bug
- The Common-LISP compatibility library has been split into 2
- parts: a compatible part which redefines no PSL functions, and
- an incompatible part that does. The incompatible part is
- PL:CLCOMP.
- Date: 18 Jun 1982
- From: SOREFF at HP-THOR
- Subject: Module loaded test
- Is there any predicate which checks to see if an atom is the name
- of a load module which has been loaded?
- RESPONSE (Perdue):
- No, but it is currently the practice to use the expression
- "(memq <atom> options*)" to determine this.
- Date: 18 Jun 1982 1424-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Char macro
- The char macro is not well documented and the use of <Ctrl-G> is
- almost certainly not correct.
- Date: 18 Jun 1982 1425-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: PLAP: logical name
- Class: Distribution of PSL
- The name PLAP: is used in the full-restore.ctl file, but is not
- a standard logical name. It should be PL: instead.
- RESPONSE (Griss):
- The file full-restore.ctl is not documented, wasn't intended for
- distribution. Something will be done to make things consistent.
- Date: 18 Jun 1982 1429-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Batch control files
- Class: Distribution of PSL
- The batch control files use the standard logical names. For
- this to work properly, users who rebuild PSL should have a
- BATCH.CMD file that TAKEs the logical-names command file. This
- approach is cleaner than having mentions of the actual name of
- the PSL directory, if not others, in each batch control file.
- Date: 18 Jun 1982 1431-PDT
- From: Cris Perdue <Perdue at HP-HULK>
- Subject: Building new directories
- Class: Documentation bug
- The DEC-20 release notes suggest the use of the standard logical
- names as arguments to the TOPS-20 BUILD command. Our version of
- BUILD does not accept a logical name for the building of a NEW
- directory (it's OK for old ones, although that feature may be
- a local addition to the code).
- Date: 6/16/82
- From: Alan Snyder <AS>
- Subject: PSL compiler bug; RETURN
- Class: Bug
- I have discovered what appears to be a bug in the PSL compiler.
- When you use (RETURN) with no argument, the compiler generates
- a "call" to the function NIL, which is undefined. The interpreter
- has no problem. For example:
- 16 June 1982 Alan Snyder
- ----------------------------------------
- Compiling TEST
- Source:
- (LAMBDA NIL
- (PROG NIL
- (RETURN))
- 3)
- ----------------------------------------
- Object:
- (*ENTRY TEST EXPR 0)
- (*ALLOC 0)
- (*LINK NIL EXPR 0)
- (*MOVE '3 (REG 1))
- (*EXIT 0)
- *** Function `TEST' has been redefined
- *** (TEST): base 326164, length 3 words
- ----------------------------------------
- RESPONSE (csp):
- Definitely a bug. Not hard to fix, the solution awaits a
- decision about just what error checking there should be on
- RETURN.
- RESPONSE (Benson):
- The compiler now gives a warning message.
- From: Lanam
- Subject: Packages
- Class: Bugs, Information
- Doug uncovered the following:
- The current package is never changed as a module is loaded.
- This means that if one changes the current package, it should be
- reset as soon as possible. Some functions are "autoloaded". Be
- aware of this when changing the current package.
- Date: 5/27
- From: Lanam
- Class: Bug
- asin (n) where n > 1 or n < -1 gives the error
- that REDERR is an undefined function.
- Date: 5/27
- From: Lanam
- Class: Deficiency
- I can not find any method of general type checking or
- type coersion.
- Date: 5/27
- From: Lanam
- Class: Bug
- (close) with no arguments says nil is an undefined
- function.
- Date: 5/27
- From: Lanam
- Class: Note
- (car nil) and (cdr nil) is illegal. I would prefer
- (car nil) => nil and (cdr nil) => nil.
- Date: 5/27
- From: Lanam
- Subject: Reader
- Class: Bug
- Typing an extra ")" to the top level interpreter
- gives you an error message. It would be nicer if it was just
- ignored.
- Date: 5/27
- From: Lanam
- Subject: Getd, Putd
- Class: Comment
- It would be nice if (putd new-function-name (getd old-function
- name)) worked. At present the best I can see is
- (let ((x (getd ..)))
- (putd new (car x) (cdr x)))
- Date: 5/27
- From: Lanam
- Subject: Lexprs
- Class: Feature request
- Need a package that allows lexpr and (arg n) inside
- lexprs.
- Date: 5/27
- From: Lanam
- Subject: Defun
- Class: Deficiency
- Defun in common lisp compatibility only handles
- exprs, not macros, or fexprs.
- Date: 5/27
- From: Lanam
- Subject: Function/special definition
- Class: Bug
- Cannot have the names of fexprs or macros or nexprs,
- be the name of a special variable also.
- Date: 5/27
- From: Lanam
- Subject: Char function
- Class: Documentation bug
- There are two char functions described in the manual. The one
- mentioned as being loaded with the Common-LISP strings package is
- not loaded in with the strings package.
- Date: 5/24
- From: Goldstein
- Subject: Argument checking
- Class: Clarification
- Is it the case that PSL does not check for functions that receive
- the wrong number of arguments? Is it able to do so (for
- interpretive & for compiled code)? It would be nice if it had
- such an error checking mode.
- Date: 5/24
- From: Goldstein
- Subject: Section 8.7
- Class: Documentation deficiency
- The arguments to the string functions are not defined.
- Date: 5/24
- From: Goldstein
- Subject: Globals, fluids; Section 10.4
- Class: Bug, Documentation bug
- The manual claims that global variables cannot be rebound.
- However, no error occured for: ((lambda (throwtag*) 1) 1) which
- rebinds this global??
- Date: 5/24
- From: Goldstein
- Subject: Closures, Section 10.3.1
- Class: Question
- What is the timetable for implementing closures. Altbind is
- unavailable at our site.
- Date: 5/24
- From: Goldstein
- Subject: Global variables; Section 12.2
- The description of the globals is frequently missing or too
- cryptic.
- Date: 5/24
- From: Goldstein
- Subject: Lisp Rlisp compatibility
- Class: Deficiency
- If RLISP is only a parser for Lisp, then there should be
- functions: On, Off, In, Out. Why don't these functions exist.
- Ditto for <=, >=, etc.
- RESPONSE (Griss, as told to Perdue):
- This situation is basically historical. The problems with On,
- Off, In, Out, etc. are due to the RLISP preprocessor doing some
- semantics as well as parsing. It is gradually being cleaned up.
- Date: 5/23
- From: Goldstein
- Subject: Definition of Equal, sec 4.2
- Class: Documentation deficiency
- Comment about open-compiling that begins "... Otherwise, ..." is
- confusing. The text says that "This is not true of EQ and Eqn".
- What is not true. EQ is supposed to be open-compiled as well.
- Date: 5/23
- From: Goldstein
- Subject: Definition of EqCar, sec 4.2
- Class: Deficiency, Inquiry
- EqCar(U,V) does not complain if (Car U) is illegal, e.g. (EQCAR
- "ab" V). (1) Does the definition check, or is some random thing
- happening; and (2) should it report an error if (CAR U) is
- illegal.
- RESPONSE (Perdue):
- 1) The definition checks that U is pairp.
- 2) It evidently should not report an error if U is not pairp.
- Date: 5/23
- From: Goldstein
- Subject: Definition of Null, sec 4.2
- Class: Manual, Inquiry
- Is it reasonable to place documentation of Null in 4.2.2, Is Null
- a predicate for testing Type of an Object?
- Date: 5/23
- From: Goldstein
- Subject: Definition of Intern and NewId, sec 4.2
- Class: Manual deficiency
- Interning a newId does not lose NewId's property list, if no previous
- ID with this print name has been interned, e.g.
- (setq x (newId "ABC")) %No atom with this print name exists.
- (put x 'prop 'val)
- (intern x)
- (get 'ABC 'prop) --> val
- Manual could be clearer in this regard.
- Date: 5/23
- From: Goldstein
- Subject: Arithmetic functions
- Class: Manual, Inconsistency
- MACRO rather than NEXPR is used for the multi-argument functions
- like PLUS. What is the rationale for this.
- Date: 5/23
- From: Goldstein
- Subject: Help function
- Class: Inconsistency
- (help top-loop) and (help toploop) are not the same. The former
- just prints the file. The latter executes a function that prints
- the file, then prints the current bindings of the reader,
- printer, etc. This might be confusing to a novice user.
- Perhaps, the file should be toploop.hlp (without the - sign).
- Date: 5/22
- From: Goldstein
- Subject: Backtrace
- Class: Improvement
- It would be nice if BACKTRACE did not print the functions that it
- itself put on the stack, since they are artifacts of its use and
- not relevant to debugging.
- Date: 5/22
- From: Goldstein
- Subject: EMODE
- Class: Improvement
- (1) bind backspace to the rubout handler.
- (2) Commands like read and write file should use the default file
- associated with the current buffer.
- (3) Auto save and Auto fill are two important additions.
- (4) Write should say that the file was written.
- Date: 5/22
- From: Goldstein
- Subject: HELP function
- Class: Improvement
- It would be nice if the HELP function also informed the user of
- some dynamic properties, e.g. HELP <module> should let the user
- know if the module is loaded.
- Date: 5/22
- From: Goldstein
- Subject: HELP function
- Class: Documentation deficiency
- (HELP) states that a certain set of help files are available. In
- fact, there is a larger set corresponding to thse described in
- the manual.
- Date: 5/22
- From: Goldstein
- Subject: EMACS function
- Class: Bug
- (EMACS) tries to run <EDITORS>EMACS.EXE. The HP HULK has no
- directory <EDITORS>.
- Date: 5/22
- From: Goldstein
- Subject: MMFORK variable
- Class: Consistency
- The manual describes the convention that globals have the suffix
- !*. But, the MM command uses the variable MMFORK with no suffix.
- Date: 5/22
- From: Goldstein
- Subject: HELP function
- Class: Bug
- In RLISP mode, HELP FOR; losses because the parser
- attempts to parse FOR unless FOR appears in quotes.
- Date: 5/22
- From: Goldstein
- Subject: External, Internal, Exported; section 21.2
- Class: Documentation bug
- In the example, EXPORTED ... appears, but it is not documented in
- the preceding text. Only external, internal are documented.
- Date: 5/22
- From: Goldstein
- Subject: SYSLISP; p21.3
- Class: Documentation deficiency
- The manual does not explain how to reformulate a LISP function
- into a SYSLISP function when in LISP mode, i.e. is there a some
- kind of reformulator that converts calls to plus to calls to
- wplus2.
- Date: 5/22
- From: Goldstein
- Subject: *TIME variable
- Class: Bug
- Executing (setq !*Time T) causes an error which caused system to
- begin prompting with line number 1. This only happened the first
- time, and did not repeat when !*Time was toggled. Repeatable in
- a fresh PSL. Does not occur in RLISP mode, only in LISP mode.
- Date: 5/8
- From: Goldstein
- Subject: How to make a dribble file
- Class: Inquiry
- It appears that PSL cannot write to two channels at the same
- time, thus preventing a dribble file.
- RESPONSE (Griss):
- Redefine PRINT functions to write to two channels or define your
- own special channel with a writechannel function that writes to
- two other channels.
- Date: 5/8
- From: Goldstein
- Subject: TOPS-20, DOCMDS, CMDS
- Class: Documentation deficiency, Bug
- These functions do not seemed to be defined.
- RESPONSE (Griss):
- Help file erroneously mentions exec0. Exec, MM and EMACS are
- autoloading. The rest are obtained by LOAD EXEC;.
- Date: 5/8
- From: Goldstein
- Subject: Prettyprinting
- Class: Inquiry
- Is there a prettyprinter?
- RESPONSE (Griss):
- Yes, the function Prettyprint.
- Date: 5/8
- From: Goldstein
- Subject: PPF
- Class: Bugs
- Debug module has the function PPF which apparently pretty
- prints in RLISP format. PPF tries to print according to
- the currently loaded parser. Unfortunately, it detects whats
- loaded by looking for the function RPRINT, which is autoloading.
- Also, ppf and plist lose when the fn or plist is not defined.
- RESPONSE (Griss):
- True.
- Date: 5/8
- From: Goldstein
- Subject: Interrupt characters
- Class: Documentation deficiency
- There don't seem to be any interrupt characters, e.g. control-g
- to return to toplevel. (An interrupt package is mentioned, but
- not cited as complete.).
- RESPONSE (Griss):
- Interrupts exist (Load Interrupt), but not documented.
- Date: 5/8
- From: Goldstein
- Subject: LAPOUT, LAPEND
- Class: Obsolete, Inquiry
- The functions LAPOUT, and LAPEND do not seem to exist. Possibly
- a renaming has taken place since the 18 January manual.
- RESPONSE (Griss):
- FASLOUT and FASLEND are the correct functions.
- Date: 5/8
- From: Goldstein
- Subject: Saving a PSL
- Class: Inquiry, obsolete
- I tried SAVESYSTEM, followed by the TOPS-20 SAVE command.
- However, when I tried to run the resulting .exe file, I got the
- complaint "No starting address". How is a PSL saved and
- restarted. (Manual, p.14.1)
- RESPONSE (Griss):
- The file on the tape is still incorrect. Patch needed to handle
- tops 20 release.
- RESOLUTION:
- Apparently fixed.
- Date: 5/8
- From: Goldstein
- Subject: HELP
- Class: Documentation bug, documentation deficiency
- The manual claims that HELP of no arguments prints a message. It
- works in Lisp mode as (HELP) and in RLISP mode as HELP; but
- HELP(); loses??
- RESPONSE (Griss):
- help() still loses. help mini-editor requires ! before -.
- Date: 5/8
- From: Goldstein
- Subject: Rubout handler
- Class: Inquiry
- The Rubout handler is line-oriented, and apparently one cannot
- rubout accross cr's. Is this true?
- RESPONSE (Griss):
- Yes.
- Date: 5/8
- From: Goldstein
- Subject: PSL memory usage
- Class: Inquiry
- What is the size of various PSL spaces.
- Date: 5/8
- From: Goldstein
- Subject: PSL memory usage
- Class: Feature request
- One would like an INQUIR function that prints out PSL memory
- usage statistics.
- Date: 5/8
- From: Goldstein
- Subject: HELP facility
- Class: Documentation bug; Bug
- Note that some help files are incorrect; eg HELP editor refers to
- minieditor, not mini-editor
|