Re: [julia-users] New to Julia - Need some basic help

2016-08-24 Thread Jeffrey Sarnoff
(before all that, rename the file to something simple like "everyday.jl") On Thursday, August 25, 2016 at 1:05:20 AM UTC-4, Jeffrey Sarnoff wrote: > > on an empty area of the windows desktop, RIGHT-CLICK and select new > > shortcut. > where it says type the location of the item, type >

Re: [julia-users] New to Julia - Need some basic help

2016-08-24 Thread Jeffrey Sarnoff
on an empty area of the windows desktop, RIGHT-CLICK and select new > shortcut. where it says type the location of the item, type C:\\Users\\JHerron\\Documents\\Documents\\Personal\\DFS\\NHL\\Julia\\ code_for_Github.jl then click on next start Julia julia> Pkg.update() # ignore

[julia-users] Re: Avoiding duplicate code when defining concrete subtypes of an abstract type

2016-08-24 Thread Jeffrey Sarnoff
You may be stepping twice where once does nicely. `abstract Currency` establishes Currency as an abstract type [in Julia, by convention, type names are capitalized; it helps others to stay with that practice]. If we want to use it `abstract Cash <: Currency` establishes Cash as

[julia-users] Re: applying non zero boundary conditions in FEM

2016-08-24 Thread Nguyen Vinh Phu
Thanks a lot Chris and Kristoffer. It works now. On Wednesday, 24 August 2016 14:29:52 UTC+10, Nguyen Vinh Phu wrote: > > Hello all, > > I am implementing a finite element solver in Julia. I have computed the > stiffness matrix (as a sparse matrix K) and the force vector (F). I have > some non

Re: [julia-users] High memory consumption with loops

2016-08-24 Thread Tim Holy
What have you tried so far? See http://docs.julialang.org/en/latest/manual/ performance-tips/#tools, esp. @code_warntype. --Tim On Wednesday, August 24, 2016 1:55:23 PM CDT Venil Noronha wrote: > The following code seems to consume a lot of memory. Could anyone spot what > I'm doing wrong here?

[julia-users] Tab completion for sub-modules names

2016-08-24 Thread Miguel Goncalves
In the Julia REPL if I have a super-module Food which loads in a sub-module Fruit, module Food using Fruit include("nutrition.jl") export carbohydrate export fat export protein end then pressing tab after typing, Food. I get the list, carbohydratefatprotein But the sub-module

[julia-users] High memory consumption with loops

2016-08-24 Thread Venil Noronha
The following code seems to consume a lot of memory. Could anyone spot what I'm doing wrong here? I'm also using the JuMP library. function initUtilityConstraint() c = categories[1] me = attack_methods[1] t = teams[1] tuple = Simulate.cmt(c, me, t) w = windows[1] r =

[julia-users] Re: Julia Plugin System

2016-08-24 Thread Thomas Hatch
Oh, I should also mention that the system allows modules to be lazy loaded when the function is called, something I achieve in python via using `__getattr__`, since my Julia approach calls a function to retrieve the plugin function it also works. On Wednesday, August 24, 2016 at 3:29:47 PM

Re: [julia-users] Re: successfully built julia using windows subsystem for linux but getting '`: not enough memory (ENOMEM) when trying to use Compat

2016-08-24 Thread mmh
Thanks, didnt' see that before. On Wednesday, August 24, 2016 at 5:30:23 PM UTC-4, Isaiah wrote: > > Please see > https://groups.google.com/d/msg/julia-users/K3AKvD6EYT8/vGcchWRlAgAJ > > On Wed, Aug 24, 2016 at 5:26 PM, mmh > wrote: > >> >> versioninfo() >> Julia Version

Re: [julia-users] Re: successfully built julia using windows subsystem for linux but getting '`: not enough memory (ENOMEM) when trying to use Compat

2016-08-24 Thread Isaiah Norton
Please see https://groups.google.com/d/msg/julia-users/K3AKvD6EYT8/vGcchWRlAgAJ On Wed, Aug 24, 2016 at 5:26 PM, mmh wrote: > > versioninfo() > Julia Version 0.6.0-dev.390 > Commit 3ab4d76 (2016-08-24 18:18 UTC) > Platform Info: > System: Linux (x86_64-linux-gnu) > CPU:

[julia-users] Re: Julia Plugin System

2016-08-24 Thread Thomas Hatch
Sorry, I have read a great deal of the documentation but I can't find anything on nested modules. Could I persuade you to direct me to a doc or an example? I think that a nested module would be optimal, I have just been unable to figure out how to do it. Ok, here goes trying to explain my

[julia-users] Re: successfully built julia using windows subsystem for linux but getting '`: not enough memory (ENOMEM) when trying to use Compat

2016-08-24 Thread mmh
versioninfo() Julia Version 0.6.0-dev.390 Commit 3ab4d76 (2016-08-24 18:18 UTC) Platform Info: System: Linux (x86_64-linux-gnu) CPU: unknown WORD_SIZE: 64 BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell) LAPACK: libopenblas64_ LIBM: libopenlibm LLVM: libLLVM-3.7.1

[julia-users] Re: successfully built julia using windows subsystem for linux but getting '`: not enough memory (ENOMEM) when trying to use Compat

2016-08-24 Thread mmh
$ julia _ _ _ _(_)_ | A fresh approach to technical computing (_) | (_) (_)| Documentation: http://docs.julialang.org _ _ _| |_ __ _ | Type "?help" for help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 0.6.0-dev.390 (2016-08-24 18:18

[julia-users] successfully built julia using windows subsystem for linux but getting '`: not enough memory (ENOMEM) when trying to use Compat

2016-08-24 Thread mmh
successfully built julia using windows subsystem for linux but getting '`: not enough memory (ENOMEM) when trying to use Compat julia> using Compat INFO: Precompiling module Compat... ERROR: could not spawn `/home/me/julia/usr/bin/julia -Cnative -J/home/me/julia/usr/lib/julia/sys.so

[julia-users] Clone git repo from dropbox

2016-08-24 Thread Nicklas Andersen
Hello Is there a way to clone a package from, for example, dropbox ? I've got dropbox set up as a git repo, but Pkg.clone("https://;) doesn't seem to like this kind of thing. Regards N

Re: [julia-users] Re: 0.5.0 rc3 error

2016-08-24 Thread Uwe Fechner
If you want to see the real error, do not use parallel make. Just type "make" instead of "make -j4". My guess: You don't have libssl-dev installed. On Wednesday, August 24, 2016 at 5:22:54 PM UTC+2, Henri Girard wrote: > > git clone git://github.com/JuliaLang/julia.git > > after : git checkout

Re: [julia-users] sockets or task problem on 0.5

2016-08-24 Thread Ben Arthur
thanks for the help. i think it's a bug in julia and have filed an issue: https://github.com/JuliaLang/julia/issues/18227

[julia-users] Re: algorithmic linear algebra question

2016-08-24 Thread Jeffrey Sarnoff
good thought -- I must be missing an expected function julia> #Pkg.clone("git://github.com/JuliaArbTypes/ArbFloats.jl.git") julia> using GenericSVD, ArbFloats julia> setprecision(ArbFloat,53); julia> n,m = 4,2; julia> srand(1); julia> X = randn(n,m) 4×2 Array{Float64,2}: 0.297288 -0.839027

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Steven G. Johnson
On Wednesday, August 24, 2016 at 9:56:29 AM UTC-4, Adrian Salceanu wrote: > > That's what I thought too Steven, thanks for confirming it. Can't find any > updates re `String` though, still talks about `AbstractString`... > Yeah, I just noticed that. Should be fixed now:

[julia-users] Re: Editing code with @edit

2016-08-24 Thread Steven G. Johnson
On Wednesday, August 24, 2016 at 1:35:21 PM UTC-4, Bill Maier wrote: > > I'm trying to get @edit to work in ijulia, running on Linux Mint 18 64-bit > with Julia built from the latest source code. I have the environment > variable JULIA_EDITOR set to /usr/bin/vi. However when I run the @edit >

[julia-users] Avoiding duplicate code when defining concrete subtypes of an abstract type

2016-08-24 Thread Cliff
As an example of what I mean, suppose that I'm trying to make a currency type for various currencies: abstract cash type usd <: cash a::Int64 b::Int64 function usd(a,b) b>=100 && error("Too much of smaller currency unit (over 99).") (b<0 || a<0) && error("Cannot have negative

[julia-users] Re: [HELP] Doubts in Julia Language with Strings.. I've condensed my doubts into one Simple Program

2016-08-24 Thread randmstring
Note that the above solutions won't work if your input happens to be non-ascii -- g's code will give something like "3:3-5:2-4:�-�" as the output for "abcabü". Imho it's better to build the string you want in the end from scratch instead of treating it as a mutable object: input =

Re: [julia-users] Re: 0.5.0 rc3 error

2016-08-24 Thread Tony Kelman
The actual error likely occurred much earlier. You could try for i in `seq 10` do; make -j4; done then you'd probably see the actual error. If I had to guess, you're probably missing one or more of gfortran, libssl-dev, m4, or cmake.

[julia-users] algorithmic linear algebra question

2016-08-24 Thread Tony Kelman
Try https://github.com/simonbyrne/GenericSVD.jl ?

Re: [julia-users] Invalid history file (~/.julia_history) format

2016-08-24 Thread Kristoffer Carlsson
What does it say when you run Base.REPL.find_hist_file() On Wednesday, August 24, 2016 at 6:31:58 PM UTC+2, Andy Dobson wrote: > > I've uninstalled everything again, and I *think* I've deleted all > julia-related files, but when I re-install Julia I still get the same error > message. > >

Re: [julia-users] Invalid history file (~/.julia_history) format

2016-08-24 Thread Andy Dobson
I've uninstalled everything again, and I *think* I've deleted all julia-related files, but when I re-install Julia I still get the same error message. On Wednesday, August 24, 2016 at 1:12:25 PM UTC+1, Kristoffer Carlsson wrote: > > It is likely "~/.juliarc" that is the file you are after.

[julia-users] Re: [HELP] Doubts in Julia Language with Strings.. I've condensed my doubts into one Simple Program

2016-08-24 Thread Tim Wheeler
str = "abcabc" arr = convert(Vector{UInt8}, str) # you can increase indeces with addition now. arr[1] += 5 # convert back str2 = convert(typeof(str), arr) println(str2) # -> should print "fbcabc" On Wednesday, August 24, 2016 at 7:35:58 AM UTC-7, Rishabh Raghunath wrote: > > *Hello Julia Users

Re: [julia-users] Re: 0.5.0 rc3 error

2016-08-24 Thread Henri Girard
git clone git://github.com/JuliaLang/julia.git after : git checkout release-0.5 Before I got all dependances from ubuntu sudo apt build-dep julia (I have the 0.5 binary in repo) but I would like to get the dev rc3. Le 24/08/2016 à 14:47, Uwe Fechner a écrit : Where did you get the source

[julia-users] Re: [HELP] Doubts in Julia Language with Strings.. I've condensed my doubts into one Simple Program

2016-08-24 Thread ggggg
I haven't worked in C, but my impression is that it doesn't really distinguish between a UInt8 and a Character. In Julia, you can convert your string to a Vector{UInt8} and you should be able to work like you are used to. This gist has one way to implement your algorithm:

Re: [julia-users] Recursive/Circular parametric types

2016-08-24 Thread Tim Holy
I don't think that's type-stable. Since each node of each tree will also be a different type, I also think you'll end up hating life due to compile times. There's some (peripherally) relevant discussion at http://docs.julialang.org/

[julia-users] Re: List of all Tasks

2016-08-24 Thread Ben Arthur
+1

[julia-users] [HELP] Doubts in Julia Language with Strings.. I've condensed my doubts into one Simple Program

2016-08-24 Thread Rishabh Raghunath
*Hello Julia Users !!..* I have asked this question before in the forum but am still a bit unclear on how to do the below.. I have condensed a few of my doubts in the question below. Being from a C background where strings are just character Arrays, manipulating individual characters using

[julia-users] Help with a Julia Program.. Many doubts condensed in one question.

2016-08-24 Thread Rishabh Raghunath
*Hello Julia Users !!..* I have asked this question before in the forum but am still a bit unclear on how to do the below.. I have condensed a few of my doubts in the question below. Being from a C background where strings are nothing bot character Arrays, manipulating individual characters

[julia-users] algorithmic linear algebra question

2016-08-24 Thread Jeffrey Sarnoff
I have a numeric type where m is a square matrix of that type. I can do m', inv(m), det(m), lu(m), qr(m). svd, eig do not work as I have no svdfact! or eigfact! routines specialized for this type. Is there a way to combine those actions to make a function that does one or more of

[julia-users] sockets or task problem on 0.5

2016-08-24 Thread Ben Arthur
anyone else having problems with sockets or tasks on 0.5-rc3 ? i've got a complicated program that runs fine on 0.4.6, but hangs on 0.5. am in the process of debugging...

[julia-users] Re: Correct way to use squeeze function

2016-08-24 Thread Sigurd Stoll
That clears things up, thank you very much. On Tuesday, August 23, 2016 at 9:12:20 PM UTC+2, jonatha...@alumni.epfl.ch wrote: > > Squeeze will remove s dimension of size one, so you can transform an array > of size 5x1x4 into 5x4 by squeezing the dimension 2. > > In 0.4 the last dimension is

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Adrian Salceanu
That's what I thought too Steven, thanks for confirming it. Can't find any updates re `String` though, still talks about `AbstractString`... miercuri, 24 august 2016, 15:29:56 UTC+2, Steven G. Johnson a scris: > > > > On Wednesday, August 24, 2016 at 8:52:37 AM UTC-4, Adrian Salceanu wrote: >>

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Steven G. Johnson
On Wednesday, August 24, 2016 at 8:52:37 AM UTC-4, Adrian Salceanu wrote: > > Is the documentation available anywhere for 0.5? > http://docs.julialang.org/en/latest/manual/ although this is technically the bleeding-edge git-master manual (but it is not too different from 0.5 at this point).

Re: [julia-users] Proposed solution for writing Enums

2016-08-24 Thread Brian Rogoff
What's an example of a good Julep? I did some searching and couldn't find much. Is there a document somewhere about writing and submitting Julia Enhancement Proposals? On Tuesday, August 23, 2016 at 11:09:25 AM UTC-7, Stefan Karpinski wrote: > > On Tue, Aug 23, 2016 at 12:39 PM, Brian Rogoff

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Adrian Salceanu
Is the documentation available anywhere for 0.5? miercuri, 24 august 2016, 14:01:44 UTC+2, Steven G. Johnson a scris: > > > > On Wednesday, August 24, 2016 at 5:18:05 AM UTC-4, Adrian Salceanu wrote: >> >> a. ASCIIStrings vs UTF8Strings. >> > > That distinction is going away in Julia 0.5; there

[julia-users] Re: 0.5.0 rc3 error

2016-08-24 Thread Uwe Fechner
Where did you get the source code from? Which command did you execute, that resulted in this error? On Wednesday, August 24, 2016 at 12:26:30 PM UTC+2, Henri Girard wrote: > > I have this error on ubuntu 16.04, any help ? > > > checking usable gmp.h at link time... yes > checking for

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Adrian Salceanu
> That distinction is going away in Julia 0.5; there is just one type, String. Yeee, that's great! I guess, with 0.5 RC3 now out, it's a good time to finally switch. miercuri, 24 august 2016, 14:01:44 UTC+2, Steven G. Johnson a scris: > > > > On Wednesday, August 24, 2016 at 5:18:05 AM

Re: [julia-users] Re: help with deepcopy_internal

2016-08-24 Thread Chris Stook
I think this fixes it: type SelfReferential obj::SelfReferential SelfReferential() = (x = new(); x.obj = x) end function Base.deepcopy_internal(sr::SelfReferential, oidd::ObjectIdDict) if haskey(oidd,sr) print("X") return oidd[sr] end print("Y") new_sr = SelfReferential() #

Re: [julia-users] Invalid history file (~/.julia_history) format

2016-08-24 Thread Kristoffer Carlsson
It is likely "~/.juliarc" that is the file you are after. On Wednesday, August 24, 2016 at 11:47:16 AM UTC+2, Andy Dobson wrote: > > Hi Kristoffer, > > I don't know if this is the right file (/julia-0.4.6/etc/julia/juliarc), > but this is what it says: > > # This file should contain

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Steven G. Johnson
On Wednesday, August 24, 2016 at 5:18:05 AM UTC-4, Adrian Salceanu wrote: > > a. ASCIIStrings vs UTF8Strings. > That distinction is going away in Julia 0.5; there is just one type, String. b. indexing into UTF8 strings. Can bite if you're not careful, but Julia > provides the necessary API

Re: [julia-users] New to Julia - Need some basic help

2016-08-24 Thread j verzani
I haven't tested it on Windows, but the `Tk` package has `GetOpenFile()` that should allow for a dialog to navigate the file system. Something like `include(GetOpenFile())` should work. On Wednesday, August 24, 2016 at 7:40:10 AM UTC-4, Pigskin Ablanket wrote: > > Looks like his comment got

Re: [julia-users] New to Julia - Need some basic help

2016-08-24 Thread Pigskin Ablanket
Looks like his comment got deleted. Will try it today and follow up. Thanks again for all the help On Tuesday, August 23, 2016 at 10:44:19 PM UTC-4, Jeffrey Sarnoff wrote: > > As Steven mentioned, starting the program from the directory where the > files reside allows you to include the file

[julia-users] Re: Transforming vector to upper triangular matrix

2016-08-24 Thread Ahmed Mazari
How to transform a lower triangular matrix to a vector ? l used the function vec( ) and it doesn't work l got this code error ERROR: ArgumentError: Triangular matrix must have two dimensions in similar at linalg/triangular.jl:27 in reshape at abstractarray.jl:213 in vec at

[julia-users] Re: Databases: Interpolation in backticks

2016-08-24 Thread Colin Beckingham
After further investigation, I find that unbalanced triple quotes works (see https://github.com/JuliaLang/julia/issues/5800) as in $opts = ["--pset=footer=off""","-hlocalhost","..."] and also `psql --pset="footer=off" $opts -c $sql` with $opts not containing the --pset=... On Wednesday, 24

[julia-users] Re: 0.5.0 rc3 error

2016-08-24 Thread Henri Girard
Le mercredi 24 août 2016 12:26:30 UTC+2, Henri Girard a écrit : > > I have this error on ubuntu 16.04, any help ? > > > checking usable gmp.h at link time... yes > checking for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency... yes > checking for __gmpz_init in -lgmp... yes > checking if gmp.h

[julia-users] Re: Irregular Interpolation Help

2016-08-24 Thread Kaj Wiik
Hi! See: https://groups.google.com/d/msg/julia-users/XH7SRGHc6Pg/OQSouoUoAwAJ (I had problems that were in fact not related to gridding...) Cheers, Kaj On Wednesday, August 24, 2016 at 12:41:55 PM UTC+3, christo...@roames.com.au wrote: > > Hi all, > > I have been looking at Interpolations.jl,

[julia-users] 0.5.0 rc3 error

2016-08-24 Thread Henri Girard
I have this error on ubuntu 16.04, any help ? checking usable gmp.h at link time... yes checking for GMP_NUMB_BITS and sizeof(mp_limb_t) consistency... yes checking for __gmpz_init in -lgmp... yes checking if gmp.h version and libgmp version are the same... (6.1.0/6.1.0) yes checking for GMP

[julia-users] Databases: Interpolation in backticks

2016-08-24 Thread Colin Beckingham
Sometimes we need to get bits of data from databases. And one of the quick ways to do this is pass an SQL query to Mysql or Postgresql without loading up the special database specific (or not) Julia libraries. Backticks work well up to a point. For example `psql $opts -c $sql` works nicely if

[julia-users] ANN: 0.5.0-rc3 now available

2016-08-24 Thread Viral Shah
Quoting Tony's earlier message: Release candidate 3 is now available: https://s3.amazonaws.com/julialang/bin/linux/x64/0.5/julia-0.5.0-rc3-linux-x86_64.tar.gz https://s3.amazonaws.com/julialang/bin/linux/x86/0.5/julia-0.5.0-rc3-linux-i686.tar.gz

Re: [julia-users] Invalid history file (~/.julia_history) format

2016-08-24 Thread Andy Dobson
Hi Kristoffer, I don't know if this is the right file (/julia-0.4.6/etc/julia/juliarc), but this is what it says: # This file should contain site-specific commands to be executed on Julia startup # Users should store their own personal commands in homedir(), in a file named .juliarc.jl # Set

[julia-users] ANN: Julia 0.5.0-rc3 now available

2016-08-24 Thread Viral Shah
Reposting Tony's message about RC3 in a new thread with an updated subject line. -viral On Tuesday, August 23, 2016 at 9:00:30 PM UTC+5:30, Tony Kelman wrote: > > Release candidate 3 is now available: > > > https://s3.amazonaws.com/julialang/bin/linux/x64/0.5/julia-0.5.0-rc3-linux-x86_64.tar.gz

[julia-users] Irregular Interpolation Help

2016-08-24 Thread christoph . russ
Hi all, I have been looking at Interpolations.jl, GridInterpolation.jl Diereckx.jl and a few additional packages to solve irregular interpolations in 2D. Maybe this is a trivial question, but any help would be much appreciated. Assume I have a collection of irregularly spaced 2D points (x,y)

Re: [julia-users] Invalid history file (~/.julia_history) format

2016-08-24 Thread Kristoffer Carlsson
Maybe you can look into the .juliarc file at the line where it is telling you the error is and see if anything looks strange. On Wednesday, August 24, 2016 at 11:11:54 AM UTC+2, Andy Dobson wrote: > > No, it didn't create another one. I think you're right and I didn't delete > what Julia was

[julia-users] Re: Questions regarding Julia for general purpose programming (strings, modules, dispatch, inheritance)

2016-08-24 Thread Adrian Salceanu
Hi, A bit of context first. I'm working on building a full stack web framework in the tradition of Rails and Django (https://github.com/essenciary/Genie.jl). And not only that I use Julia for general purpose programming, I also come from a completely different background, doing almost

Re: [julia-users] Invalid history file (~/.julia_history) format

2016-08-24 Thread Andy Dobson
No, it didn't create another one. I think you're right and I didn't delete what Julia was looking for. But it seems very strange that this error message appeared without any sort of prompt - I'm not doing anything that I haven't been doing for the last 6 months. On Tuesday, August 23, 2016 at

[julia-users] Re: CDF of a multivariate normal distribution

2016-08-24 Thread Jeffrey Sarnoff
It is in Distributions.jl http://distributionsjl.readthedocs.io/en/latest/multivariate.html#multivariate-normal-distribution On Tuesday, August 23, 2016 at 12:45:33 PM UTC-4, james...@gmail.com wrote: > > Hi: > > Can anyone suggest how to compute the cdf of a multivariate normal > distribution

[julia-users] Re: applying non zero boundary conditions in FEM

2016-08-24 Thread Kristoffer Carlsson
Assuming you have the free dof numbers in d_free, the prescribed dofs in d_pres, the values of the non zero DBC in a_pres the solution to the free dofs a_free is: a_free = K[d_free, d_free] \ (f[d_free] - K[d_free, d_pres] * a_pres) It will probably be faster than what you are doing now On

Re: [julia-users] Re: help with deepcopy_internal

2016-08-24 Thread Tommy Hofmann
OK, I now see that I misunderstood the question. After rereading it, I noticed something important. I think your deepcopy_internal version is broken, but you did not notice it since you did _not_ define Base.deepcopy_internal(::SelfReferential, ::ObjectIdDict). You should do the following:

Re: [julia-users] Re: help with deepcopy_internal

2016-08-24 Thread Yichao Yu
On Tue, Aug 23, 2016 at 5:19 PM, Tommy Hofmann wrote: > Why do you think that deepcopy works on SelfReferential without defining > deepcopy_internal? Line 8 of deepcopy.jl is: deepcopy(x) = > deepcopy_internal(x, ObjectIdDict()) > Because `deepcopy_internal` already handles